Quellcode durchsuchen

Changed the check on walking through the format string to use it's size instead of find the '\0' char, this allows format string with embedded '\0' chars.

mingodad vor 13 Jahren
Ursprung
Commit
2fa04324bb
1 geänderte Dateien mit 4 neuen und 3 gelöschten Zeilen
  1. 4 3
      sqstdlib/sqstdstring.cpp

+ 4 - 3
sqstdlib/sqstdstring.cpp

@@ -70,11 +70,12 @@ SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen
 	const SQChar *format;
 	SQChar *dest;
 	SQChar fmt[MAX_FORMAT_LEN];
-	sq_getstring(v,nformatstringidx,&format);
-	SQInteger allocated = (sq_getsize(v,nformatstringidx)+2)*sizeof(SQChar);
+	sq_getstring(v,nformatstringidx,&format);
+	SQInteger format_size = sq_getsize(v,nformatstringidx);
+	SQInteger allocated = (format_size+2)*sizeof(SQChar);
 	dest = sq_getscratchpad(v,allocated);
 	SQInteger n = 0,i = 0, nparam = nformatstringidx+1, w = 0;
-	while(format[n] != '\0') {
+	while(n < format_size) {
 		if(format[n] != '%') {
 			assert(i < allocated);
 			dest[i++] = format[n];