diff options
Diffstat (limited to 'runtime/debug.c')
-rw-r--r-- | runtime/debug.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/runtime/debug.c b/runtime/debug.c index 38857122..e7fdf990 100644 --- a/runtime/debug.c +++ b/runtime/debug.c @@ -944,7 +944,7 @@ void dbgoprint(obj_t *pObj, char *fmt, ...) { va_list ap; - char pszWriteBuf[1024]; + char pszWriteBuf[32*1024]; size_t lenWriteBuf; if(!(Debug && debugging_on)) @@ -983,14 +983,13 @@ dbgprintf(char *fmt, ...) va_start(ap, fmt); lenWriteBuf = vsnprintf(pszWriteBuf, sizeof(pszWriteBuf), fmt, ap); va_end(ap); - if(lenWriteBuf >= sizeof(pszWriteBuf)) { - /* if we need to truncate, do it in a somewhat useful way... */ - pszWriteBuf[sizeof(pszWriteBuf) - 5] = '!'; - pszWriteBuf[sizeof(pszWriteBuf) - 4] = '.'; - pszWriteBuf[sizeof(pszWriteBuf) - 3] = '.'; - pszWriteBuf[sizeof(pszWriteBuf) - 2] = '.'; - pszWriteBuf[sizeof(pszWriteBuf) - 1] = '\n'; + /* prevent buffer overrruns and garbagge display */ + pszWriteBuf[sizeof(pszWriteBuf) - 5] = '.'; + pszWriteBuf[sizeof(pszWriteBuf) - 4] = '.'; + pszWriteBuf[sizeof(pszWriteBuf) - 3] = '.'; + pszWriteBuf[sizeof(pszWriteBuf) - 2] = '\n'; + pszWriteBuf[sizeof(pszWriteBuf) - 1] = '\0'; lenWriteBuf = sizeof(pszWriteBuf); } dbgprint(NULL, pszWriteBuf, lenWriteBuf); |