Skip to content

Commit 430d9f8

Browse files
author
Mike Pall
committed
Fix string.format("%c", 0).
1 parent 7dbf0b0 commit 430d9f8

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/lib_string.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -850,20 +850,21 @@ LJLIB_CF(string_format)
850850
} else { /* format item */
851851
char form[MAX_FMTSPEC]; /* to store the format (`%...') */
852852
char buff[MAX_FMTITEM]; /* to store the formatted item */
853+
int n = 0;
853854
if (++arg > top)
854855
luaL_argerror(L, arg, lj_obj_typename[0]);
855856
strfrmt = scanformat(L, strfrmt, form);
856857
switch (*strfrmt++) {
857858
case 'c':
858-
sprintf(buff, form, lj_lib_checkint(L, arg));
859+
n = sprintf(buff, form, lj_lib_checkint(L, arg));
859860
break;
860861
case 'd': case 'i':
861862
addintlen(form);
862-
sprintf(buff, form, num2intfrm(L, arg));
863+
n = sprintf(buff, form, num2intfrm(L, arg));
863864
break;
864865
case 'o': case 'u': case 'x': case 'X':
865866
addintlen(form);
866-
sprintf(buff, form, num2uintfrm(L, arg));
867+
n = sprintf(buff, form, num2uintfrm(L, arg));
867868
break;
868869
case 'e': case 'E': case 'f': case 'g': case 'G': case 'a': case 'A': {
869870
TValue tv;
@@ -880,10 +881,10 @@ LJLIB_CF(string_format)
880881
nbuf[len] = '\0';
881882
for (p = form; *p < 'A' && *p != '.'; p++) ;
882883
*p++ = 's'; *p = '\0';
883-
sprintf(buff, form, nbuf);
884+
n = sprintf(buff, form, nbuf);
884885
break;
885886
}
886-
sprintf(buff, form, (double)tv.n);
887+
n = sprintf(buff, form, (double)tv.n);
887888
break;
888889
}
889890
case 'q':
@@ -902,14 +903,14 @@ LJLIB_CF(string_format)
902903
luaL_addvalue(&b);
903904
continue;
904905
}
905-
sprintf(buff, form, strdata(str));
906+
n = sprintf(buff, form, strdata(str));
906907
break;
907908
}
908909
default:
909910
lj_err_callerv(L, LJ_ERR_STRFMTO, *(strfrmt -1));
910911
break;
911912
}
912-
luaL_addlstring(&b, buff, strlen(buff));
913+
luaL_addlstring(&b, buff, n);
913914
}
914915
}
915916
luaL_pushresult(&b);

0 commit comments

Comments
 (0)