[Jun 22, 20:39] mikedld, ping I'm looking at 4160-01-error.patch and the changes to tr_strdup_vprintf() the va_copy is a nice improvement, I hadn't thought about the possible safety issues of making multiple calls to evutil_vsnprintf() with the same va_list I wonder if it might be better (simpler, terser, "cleaner") to implement it in terms of evbuffer_add_vprintf() and get rid of that 2 KiB statbuf eg, something like char * tr_strdup_vprintf (const char * fmt, va_list ap) { struct evbuffer * buf = evbuffer_new (); evbuffer_add_vprintf (buf, fmt, ap); return evbuffer_free_to_str (buf); } * zz_sidv is now known as sidv mikedld, (2) in tr_error_free()'s #ifdef TR_PARANOID clause, maybe setting code and message to a DEADBEEF style value rather than zeroing it all out mikedld, (3) this is pretty minor, but prefer tr_new() to tr_malloc() mikedld, (4) this is debatable, but IMO there's no need to check for new/malloc failure... if we get to the point where pulling a struct off the heap fails, then nothing else is going to work anyway there's a case to be made for failing gracefully but if libtransmission can't make heap allocations then it's not going to be able to upload or download either so failing gracefully would mean "keep running but never do anything" ... in that hypothetical state, I'd argue it's better to crash and let the crash reporter tool file a bug so that we could do a postmortem and see what went wrong