36 lines
1.1 KiB
Diff
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;
|