Fix inconsistent use of print_error() and fprintf(stderr, ...) in MEM_guarded_printmemlist_internal().

Also extended the size of buf[] in print_error() to prevent mem_printmemlist_pydict_script[]
from getting truncated when MEM_printmemlist_pydict() is used.

Differential revision: https://developer.blender.org/D675

Reviewed by: Campbell Barton
This commit is contained in:
Tamito Kajiyama 2014-07-25 19:22:58 +09:00
parent c0a9337caa
commit af585e843b

@ -231,7 +231,7 @@ __attribute__ ((format(printf, 1, 2)))
#endif #endif
static void print_error(const char *str, ...) static void print_error(const char *str, ...)
{ {
char buf[512]; char buf[1024];
va_list ap; va_list ap;
va_start(ap, str); va_start(ap, str);
@ -239,7 +239,10 @@ static void print_error(const char *str, ...)
va_end(ap); va_end(ap);
buf[sizeof(buf) - 1] = '\0'; buf[sizeof(buf) - 1] = '\0';
if (error_callback) error_callback(buf); if (error_callback)
error_callback(buf);
else
fputs(buf, stderr);
} }
static void mem_lock_thread(void) static void mem_lock_thread(void)
@ -794,11 +797,10 @@ static void MEM_guarded_printmemlist_internal(int pydict)
} }
while (membl) { while (membl) {
if (pydict) { if (pydict) {
fprintf(stderr, print_error(" {'len':" SIZET_FORMAT ", "
" {'len':" SIZET_FORMAT ", " "'name':'''%s''', "
"'name':'''%s''', " "'pointer':'%p'},\n",
"'pointer':'%p'},\n", SIZET_ARG(membl->len), membl->name, (void *)(membl + 1));
SIZET_ARG(membl->len), membl->name, (void *)(membl + 1));
} }
else { else {
#ifdef DEBUG_MEMCOUNTER #ifdef DEBUG_MEMCOUNTER
@ -818,8 +820,8 @@ static void MEM_guarded_printmemlist_internal(int pydict)
else break; else break;
} }
if (pydict) { if (pydict) {
fprintf(stderr, "]\n\n"); print_error("]\n\n");
fprintf(stderr, mem_printmemlist_pydict_script); print_error(mem_printmemlist_pydict_script);
} }
mem_unlock_thread(); mem_unlock_thread();