diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1996-11-07 18:26:19 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1996-11-07 18:26:19 -0200 |
| commit | 2f19e0ba164d38989dea4a3389753ed75858e5a1 (patch) | |
| tree | e426e5d13343b48eda46ec96bfba4594fec3c657 | |
| parent | ab7fdcbbed7a385b0e65f7c9928c4eef55280add (diff) | |
| download | lua-2f19e0ba164d38989dea4a3389753ed75858e5a1.tar.gz lua-2f19e0ba164d38989dea4a3389753ed75858e5a1.tar.bz2 lua-2f19e0ba164d38989dea4a3389753ed75858e5a1.zip | |
SunOS is not ANSI about the return value of "sprintf".
Diffstat (limited to '')
| -rw-r--r-- | strlib.c | 13 |
1 files changed, 6 insertions, 7 deletions
| @@ -3,7 +3,7 @@ | |||
| 3 | ** String library to LUA | 3 | ** String library to LUA |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_strlib="$Id: strlib.c,v 1.30 1996/10/31 17:26:04 roberto Exp roberto $"; | 6 | char *rcs_strlib="$Id: strlib.c,v 1.31 1996/10/31 20:18:05 roberto Exp roberto $"; |
| 7 | 7 | ||
| 8 | #include <string.h> | 8 | #include <string.h> |
| 9 | #include <stdio.h> | 9 | #include <stdio.h> |
| @@ -493,25 +493,24 @@ static void str_format (void) | |||
| 493 | switch (*strfrmt++) { | 493 | switch (*strfrmt++) { |
| 494 | case 'q': | 494 | case 'q': |
| 495 | luaI_addquoted(lua_check_string(arg++, "format")); | 495 | luaI_addquoted(lua_check_string(arg++, "format")); |
| 496 | break; | 496 | continue; |
| 497 | case 's': { | 497 | case 's': { |
| 498 | char *s = lua_check_string(arg++, "format"); | 498 | char *s = lua_check_string(arg++, "format"); |
| 499 | buff = openspace(strlen(s)); | 499 | buff = openspace(strlen(s)); |
| 500 | lbuffer.size += sprintf(buff, form, s); | 500 | sprintf(buff, form, s); |
| 501 | break; | 501 | break; |
| 502 | } | 502 | } |
| 503 | case 'c': case 'd': case 'i': case 'o': | 503 | case 'c': case 'd': case 'i': case 'o': |
| 504 | case 'u': case 'x': case 'X': | 504 | case 'u': case 'x': case 'X': |
| 505 | lbuffer.size += sprintf(buff, form, | 505 | sprintf(buff, form, (int)lua_check_number(arg++, "format")); |
| 506 | (int)lua_check_number(arg++, "format")); | ||
| 507 | break; | 506 | break; |
| 508 | case 'e': case 'E': case 'f': case 'g': | 507 | case 'e': case 'E': case 'f': case 'g': |
| 509 | lbuffer.size += sprintf(buff, form, | 508 | sprintf(buff, form, lua_check_number(arg++, "format")); |
| 510 | lua_check_number(arg++, "format")); | ||
| 511 | break; | 509 | break; |
| 512 | default: /* also treat cases 'pnLlh' */ | 510 | default: /* also treat cases 'pnLlh' */ |
| 513 | lua_error("invalid format option in function `format'"); | 511 | lua_error("invalid format option in function `format'"); |
| 514 | } | 512 | } |
| 513 | lbuffer.size += strlen(buff); | ||
| 515 | } | 514 | } |
| 516 | } | 515 | } |
| 517 | lua_pushstring(luaI_addchar(0)); /* push the result */ | 516 | lua_pushstring(luaI_addchar(0)); /* push the result */ |
