Преглед на файлове

Fix eating "\r" without decrementing parse string size, that was generating garbage at the end of the formated string.

mingodad преди 11 години
родител
ревизия
ff59a7fa72
променени са 1 файла, в които са добавени 2 реда и са изтрити 2 реда
  1. 2 2
      SquiLu/sqstdlib/sqstdstring.cpp

+ 2 - 2
SquiLu/sqstdlib/sqstdstring.cpp

@@ -107,7 +107,7 @@ SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen
                         ++addlen;
                         ++addlen;
                         if (*ts2 == _SC('\r') && *(ts2+1) == _SC('\n') ) {
                         if (*ts2 == _SC('\r') && *(ts2+1) == _SC('\n') ) {
                           ++addlen;
                           ++addlen;
-                          ++ts2; //eat \r and output only \n
+                          ++ts2; --size;//eat \r and output only \n
                         }
                         }
                         else if (*ts2 == _SC('"') || *ts2 == _SC('\\') || *ts2 == _SC('\n')) {
                         else if (*ts2 == _SC('"') || *ts2 == _SC('\\') || *ts2 == _SC('\n')) {
                           ++addlen;
                           ++addlen;
@@ -129,7 +129,7 @@ SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen
                       *ts2++ = _SC('"');
                       *ts2++ = _SC('"');
                       while (size--) {
                       while (size--) {
                         if (*ts == _SC('\r') && *(ts+1) == _SC('\n') ) {
                         if (*ts == _SC('\r') && *(ts+1) == _SC('\n') ) {
-                          ++ts; //eat \r and output only \n
+                          ++ts; --size;//eat \r and output only \n
                         }
                         }
                         if (*ts == _SC('"') || *ts == _SC('\\')) {
                         if (*ts == _SC('"') || *ts == _SC('\\')) {
                             *ts2++ = _SC('\\');
                             *ts2++ = _SC('\\');