Explorar o código

"%0" stands for the whole pattern (in gsub)

Roberto Ierusalimschy %!s(int64=20) %!d(string=hai) anos
pai
achega
280f7becb8
Modificáronse 1 ficheiros con 7 adicións e 3 borrados
  1. 7 3
      lstrlib.c

+ 7 - 3
lstrlib.c

@@ -1,5 +1,5 @@
 /*
 /*
-** $Id: lstrlib.c,v 1.118 2005/07/05 14:30:38 roberto Exp roberto $
+** $Id: lstrlib.c,v 1.119 2005/07/12 14:32:08 roberto Exp $
 ** Standard library for string operations and pattern-matching
 ** Standard library for string operations and pattern-matching
 ** See Copyright Notice in lua.h
 ** See Copyright Notice in lua.h
 */
 */
@@ -600,8 +600,12 @@ static void add_s (MatchState *ms, luaL_Buffer *b,
         if (!isdigit(uchar(news[i])))
         if (!isdigit(uchar(news[i])))
           luaL_putchar(b, news[i]);
           luaL_putchar(b, news[i]);
         else {
         else {
-          int level = check_capture(ms, news[i]);
-          push_onecapture(ms, level);
+          if (news[i] == '0')
+            lua_pushlstring(L, s, e - s);  /* add whole match */
+          else {
+            int level = check_capture(ms, news[i]);
+            push_onecapture(ms, level);
+          }
           luaL_addvalue(b);  /* add capture to accumulated result */
           luaL_addvalue(b);  /* add capture to accumulated result */
         }
         }
       }
       }