From 9910dedae4d0fab1518ff25036e339dee16f48c5 Mon Sep 17 00:00:00 2001
From: Mike Pall <mike>
Date: Mon, 19 Sep 2016 21:17:58 +0200
Subject: Initialize uv->immutable for upvalues of loaded chunks.

Thanks to Peter Cawley.
---
 src/lj_func.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lj_func.c b/src/lj_func.c
index 431a56d7..3f6626b3 100644
--- a/src/lj_func.c
+++ b/src/lj_func.c
@@ -140,7 +140,9 @@ GCfunc *lj_func_newL_empty(lua_State *L, GCproto *pt, GCtab *env)
   /* NOBARRIER: The GCfunc is new (marked white). */
   for (i = 0; i < nuv; i++) {
     GCupval *uv = func_emptyuv(L);
-    uv->dhash = (uint32_t)(uintptr_t)pt ^ ((uint32_t)proto_uv(pt)[i] << 24);
+    int32_t v = proto_uv(pt)[i];
+    uv->immutable = ((v / PROTO_UV_IMMUTABLE) & 1);
+    uv->dhash = (uint32_t)(uintptr_t)pt ^ (v << 24);
     setgcref(fn->l.uvptr[i], obj2gco(uv));
   }
   fn->l.nupvalues = (uint8_t)nuv;
-- 
cgit v1.2.3-55-g6feb