浏览代码

Default paths stored as external strings

Roberto Ierusalimschy 1 年之前
父节点
当前提交
1028f296a8
共有 1 个文件被更改,包括 3 次插入2 次删除
  1. 3 2
      loadlib.c

+ 3 - 2
loadlib.c

@@ -283,7 +283,8 @@ static int noenv (lua_State *L) {
 
 
 
 
 /*
 /*
-** Set a path
+** Set a path. (If using the default path, assume it is a string
+** literal in C and create it as an external string.)
 */
 */
 static void setpath (lua_State *L, const char *fieldname,
 static void setpath (lua_State *L, const char *fieldname,
                                    const char *envname,
                                    const char *envname,
@@ -294,7 +295,7 @@ static void setpath (lua_State *L, const char *fieldname,
   if (path == NULL)  /* no versioned environment variable? */
   if (path == NULL)  /* no versioned environment variable? */
     path = getenv(envname);  /* try unversioned name */
     path = getenv(envname);  /* try unversioned name */
   if (path == NULL || noenv(L))  /* no environment variable? */
   if (path == NULL || noenv(L))  /* no environment variable? */
-    lua_pushstring(L, dft);  /* use default */
+    lua_pushextlstring(L, dft, strlen(dft), NULL, NULL);  /* use default */
   else if ((dftmark = strstr(path, LUA_PATH_SEP LUA_PATH_SEP)) == NULL)
   else if ((dftmark = strstr(path, LUA_PATH_SEP LUA_PATH_SEP)) == NULL)
     lua_pushstring(L, path);  /* nothing to change */
     lua_pushstring(L, path);  /* nothing to change */
   else {  /* path contains a ";;": insert default path in its place */
   else {  /* path contains a ";;": insert default path in its place */