61 lines
2.5 KiB
Diff
61 lines
2.5 KiB
Diff
|
|
diff -Naru redis-5.0.14/deps/lua/src/ldebug.c redis-5.0.14-new/deps/lua/src/ldebug.c
|
||
|
|
--- redis-5.0.14/deps/lua/src/ldebug.c 2021-10-04 18:58:43.000000000 +0800
|
||
|
|
+++ redis-5.0.14-new/deps/lua/src/ldebug.c 2022-05-16 11:01:09.877613000 +0800
|
||
|
|
@@ -80,7 +80,6 @@
|
||
|
|
return L->basehookcount;
|
||
|
|
}
|
||
|
|
|
||
|
|
-
|
||
|
|
LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar) {
|
||
|
|
int status;
|
||
|
|
CallInfo *ci;
|
||
|
|
diff -Naru redis-5.0.14/deps/lua/src/lobject.h redis-5.0.14-new/deps/lua/src/lobject.h
|
||
|
|
--- redis-5.0.14/deps/lua/src/lobject.h 2021-10-04 18:58:43.000000000 +0800
|
||
|
|
+++ redis-5.0.14-new/deps/lua/src/lobject.h 2022-05-16 11:03:06.374928000 +0800
|
||
|
|
@@ -337,7 +337,8 @@
|
||
|
|
|
||
|
|
typedef struct Table {
|
||
|
|
CommonHeader;
|
||
|
|
- lu_byte flags; /* 1<<p means tagmethod(p) is not present */
|
||
|
|
+ lu_byte flags; /* 1<<p means tagmethod(p) is not present */
|
||
|
|
+ int readonly;
|
||
|
|
lu_byte lsizenode; /* log2 of size of `node' array */
|
||
|
|
struct Table *metatable;
|
||
|
|
TValue *array; /* array part */
|
||
|
|
diff -Naru redis-5.0.14/deps/lua/src/ltable.c redis-5.0.14-new/deps/lua/src/ltable.c
|
||
|
|
--- redis-5.0.14/deps/lua/src/ltable.c 2021-10-04 18:58:43.000000000 +0800
|
||
|
|
+++ redis-5.0.14-new/deps/lua/src/ltable.c 2022-05-16 14:40:02.759382000 +0800
|
||
|
|
@@ -364,6 +364,7 @@
|
||
|
|
t->array = NULL;
|
||
|
|
t->sizearray = 0;
|
||
|
|
t->lsizenode = 0;
|
||
|
|
+ t->readonly = 0;
|
||
|
|
t->node = cast(Node *, dummynode);
|
||
|
|
setarrayvector(L, t, narray);
|
||
|
|
setnodevector(L, t, nhash);
|
||
|
|
diff -Naru redis-5.0.14/deps/lua/src/lua.h redis-5.0.14-new/deps/lua/src/lua.h
|
||
|
|
--- redis-5.0.14/deps/lua/src/lua.h 2021-10-04 18:58:43.000000000 +0800
|
||
|
|
+++ redis-5.0.14-new/deps/lua/src/lua.h 2022-05-16 11:06:52.052521000 +0800
|
||
|
|
@@ -358,6 +358,9 @@
|
||
|
|
int i_ci; /* active function */
|
||
|
|
};
|
||
|
|
|
||
|
|
+ LUA_API void lua_enablereadonlytable (lua_State *L, int index, int enabled);
|
||
|
|
+ LUA_API int lua_isreadonlytable (lua_State *L, int index);
|
||
|
|
+
|
||
|
|
/* }====================================================================== */
|
||
|
|
|
||
|
|
|
||
|
|
diff -Naru redis-5.0.14/deps/lua/src/lvm.c redis-5.0.14-new/deps/lua/src/lvm.c
|
||
|
|
--- redis-5.0.14/deps/lua/src/lvm.c 2021-10-04 18:58:43.000000000 +0800
|
||
|
|
+++ redis-5.0.14-new/deps/lua/src/lvm.c 2022-05-16 11:14:26.356619000 +0800
|
||
|
|
@@ -138,6 +138,8 @@
|
||
|
|
const TValue *tm;
|
||
|
|
if (ttistable(t)) { /* `t' is a table? */
|
||
|
|
Table *h = hvalue(t);
|
||
|
|
+ if (h->readonly)
|
||
|
|
+ luaG_runerror(L, "Attempt to modify a readonly table");
|
||
|
|
TValue *oldval = luaH_set(L, h, key); /* do a primitive set */
|
||
|
|
if (!ttisnil(oldval) || /* result is no nil? */
|
||
|
|
(tm = fasttm(L, h->metatable, TM_NEWINDEX)) == NULL) { /* or no TM? */
|