aboutsummaryrefslogtreecommitdiff
path: root/lobject.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2024-09-20 10:06:06 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2024-09-20 10:06:06 -0300
commit00e34375ec7996422a617b0e99024d42ba61f634 (patch)
tree5872e7f056ea21be316edf7512bd255aba9b6639 /lobject.c
parent45a8f1b59310f9db74d9fc17264be2c2b2a06217 (diff)
downloadlua-00e34375ec7996422a617b0e99024d42ba61f634.tar.gz
lua-00e34375ec7996422a617b0e99024d42ba61f634.tar.bz2
lua-00e34375ec7996422a617b0e99024d42ba61f634.zip
In 'luaO_pushvfstring', all options use 'addstr2buff'
Diffstat (limited to 'lobject.c')
-rw-r--r--lobject.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/lobject.c b/lobject.c
index 1ca03e76..4dd94f45 100644
--- a/lobject.c
+++ b/lobject.c
@@ -529,9 +529,6 @@ static char *getbuff (BuffFS *buff, unsigned sz) {
529} 529}
530 530
531 531
532#define addsize(b,sz) ((b)->blen += (sz))
533
534
535/* 532/*
536** Add 'str' to the buffer. If string is larger than the buffer space, 533** Add 'str' to the buffer. If string is larger than the buffer space,
537** push the string directly to the stack. 534** push the string directly to the stack.
@@ -540,7 +537,7 @@ static void addstr2buff (BuffFS *buff, const char *str, size_t slen) {
540 if (slen <= BUFVFS) { /* does string fit into buffer? */ 537 if (slen <= BUFVFS) { /* does string fit into buffer? */
541 char *bf = getbuff(buff, cast_uint(slen)); 538 char *bf = getbuff(buff, cast_uint(slen));
542 memcpy(bf, str, slen); /* add string to buffer */ 539 memcpy(bf, str, slen); /* add string to buffer */
543 addsize(buff, cast_uint(slen)); 540 buff->blen += cast_uint(slen);
544 } 541 }
545 else { /* string larger than buffer */ 542 else { /* string larger than buffer */
546 clearbuff(buff); /* string comes after buffer's content */ 543 clearbuff(buff); /* string comes after buffer's content */
@@ -553,9 +550,9 @@ static void addstr2buff (BuffFS *buff, const char *str, size_t slen) {
553** Add a numeral to the buffer. 550** Add a numeral to the buffer.
554*/ 551*/
555static void addnum2buff (BuffFS *buff, TValue *num) { 552static void addnum2buff (BuffFS *buff, TValue *num) {
556 char *numbuff = getbuff(buff, MAXNUMBER2STR); 553 char numbuff[MAXNUMBER2STR];
557 unsigned len = tostringbuff(num, numbuff); /* format number into 'numbuff' */ 554 unsigned len = tostringbuff(num, numbuff); /* format number into 'numbuff' */
558 addsize(buff, len); 555 addstr2buff(buff, numbuff, len);
559} 556}
560 557
561 558
@@ -601,11 +598,10 @@ const char *luaO_pushvfstring (lua_State *L, const char *fmt, va_list argp) {
601 break; 598 break;
602 } 599 }
603 case 'p': { /* a pointer */ 600 case 'p': { /* a pointer */
604 const unsigned sz = 3 * sizeof(void*) + 8; /* enough space for '%p' */ 601 char bf[MAXNUMBER2STR]; /* enough space for '%p' */
605 char *bf = getbuff(&buff, sz);
606 void *p = va_arg(argp, void *); 602 void *p = va_arg(argp, void *);
607 int len = lua_pointer2str(bf, sz, p); 603 int len = lua_pointer2str(bf, MAXNUMBER2STR, p);
608 addsize(&buff, cast_uint(len)); 604 addstr2buff(&buff, bf, cast_uint(len));
609 break; 605 break;
610 } 606 }
611 case 'U': { /* an 'unsigned long' as a UTF-8 sequence */ 607 case 'U': { /* an 'unsigned long' as a UTF-8 sequence */
@@ -619,8 +615,8 @@ const char *luaO_pushvfstring (lua_State *L, const char *fmt, va_list argp) {
619 break; 615 break;
620 } 616 }
621 default: { 617 default: {
622 luaG_runerror(L, "invalid option '%%%c' to 'lua_pushfstring'", 618 addstr2buff(&buff, e, 2); /* keep unknown format in the result */
623 *(e + 1)); 619 break;
624 } 620 }
625 } 621 }
626 fmt = e + 2; /* skip '%' and the specifier */ 622 fmt = e + 2; /* skip '%' and the specifier */