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

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 13 лет назад
Родитель
Сommit
2fa04324bb
1 измененных файлов с 4 добавлено и 3 удалено
  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];