Files
moonjit/moonjit105-string_gsub.patch

36 lines
1.1 KiB
Diff

From cabe3b3cbddc1d3657af451ab0ed82416117cbc7 Mon Sep 17 00:00:00 2001
From: Francois Perrad <francois.perrad@gadz.org>
Date: Sun, 26 Jan 2020 14:54:14 +0100
Subject: [PATCH] fix string_gsub
see https://github.com/moonjit/moonjit/issues/86
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
src/lib_string.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/lib_string.c b/src/lib_string.c
index 5e2891a9e..a90e189ba 100644
--- a/src/lib_string.c
+++ b/src/lib_string.c
@@ -621,7 +621,7 @@ LJLIB_CF(string_gsub)
const char *p = luaL_checklstring(L, 2, &lp);
int tr = lua_type(L, 3);
int max_s = luaL_optint(L, 4, (int)(srcl+1));
- int anchor = (*p == '^') ? (p++, 1) : 0;
+ int anchor = (*p == '^');
int n = 0;
MatchState ms;
luaL_Buffer b;
@@ -629,6 +629,9 @@ LJLIB_CF(string_gsub)
tr == LUA_TFUNCTION || tr == LUA_TTABLE))
lj_err_arg(L, 3, LJ_ERR_NOSFT);
luaL_buffinit(L, &b);
+ if (anchor) {
+ p++; lp--; /* skip anchor character */
+ }
ms.L = L;
ms.src_init = src;
ms.src_end = src+srcl;