Просмотр исходного кода

printfing a number or string bigger than the field width should not crash.

Andreas Kling 6 лет назад
Родитель
Сommit
a8f36f72a8
1 измененных файлов с 2 добавлено и 2 удалено
  1. 2 2
      AK/printf.cpp

+ 2 - 2
AK/printf.cpp

@@ -49,7 +49,7 @@ ALWAYS_INLINE int printNumber(PutChFunc putch, char*& bufptr, dword number, bool
     }
     }
 
 
     size_t numlen = p - buf;
     size_t numlen = p - buf;
-    if (!fieldWidth)
+    if (!fieldWidth || fieldWidth < numlen)
         fieldWidth = numlen;
         fieldWidth = numlen;
     if (!leftPad) {
     if (!leftPad) {
         for (unsigned i = 0; i < fieldWidth - numlen; ++i) {
         for (unsigned i = 0; i < fieldWidth - numlen; ++i) {
@@ -72,7 +72,7 @@ template<typename PutChFunc>
 ALWAYS_INLINE int printString(PutChFunc putch, char*& bufptr, const char* str, bool leftPad, dword fieldWidth)
 ALWAYS_INLINE int printString(PutChFunc putch, char*& bufptr, const char* str, bool leftPad, dword fieldWidth)
 {
 {
     size_t len = strlen(str);
     size_t len = strlen(str);
-    if (!fieldWidth)
+    if (!fieldWidth || fieldWidth < len)
         fieldWidth = len;
         fieldWidth = len;
     if (!leftPad) {
     if (!leftPad) {
         for (unsigned i = 0; i < fieldWidth - len; ++i)
         for (unsigned i = 0; i < fieldWidth - len; ++i)