From 6055a039b57b405adc268672caeb682ef2a551ee Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Thu, 17 Oct 2019 13:02:07 -0300 Subject: Easy redefinition of valid flags for 'string.format' --- lstrlib.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'lstrlib.c') diff --git a/lstrlib.c b/lstrlib.c index 48acb8bf..a5f60b63 100644 --- a/lstrlib.c +++ b/lstrlib.c @@ -1071,7 +1071,10 @@ static int lua_number2strx (lua_State *L, char *buff, int sz, /* valid flags in a format specification */ -#define FLAGS "-+ #0" +#if !defined(L_FMTFLAGS) +#define L_FMTFLAGS "-+ #0" +#endif + /* ** maximum size of each format specification (such as "%-099.99d") @@ -1169,8 +1172,8 @@ static void addliteral (lua_State *L, luaL_Buffer *b, int arg) { static const char *scanformat (lua_State *L, const char *strfrmt, char *form) { const char *p = strfrmt; - while (*p != '\0' && strchr(FLAGS, *p) != NULL) p++; /* skip flags */ - if ((size_t)(p - strfrmt) >= sizeof(FLAGS)/sizeof(char)) + while (*p != '\0' && strchr(L_FMTFLAGS, *p) != NULL) p++; /* skip flags */ + if ((size_t)(p - strfrmt) >= sizeof(L_FMTFLAGS)/sizeof(char)) luaL_error(L, "invalid format (repeated flags)"); if (isdigit(uchar(*p))) p++; /* skip width */ if (isdigit(uchar(*p))) p++; /* (2 digits at most) */ -- cgit v1.2.3-55-g6feb