فهرست منبع

`io.input'/`io.output' always return current file

Roberto Ierusalimschy 22 سال پیش
والد
کامیت
05d567d52e
1فایلهای تغییر یافته به همراه4 افزوده شده و 3 حذف شده
  1. 4 3
      liolib.c

+ 4 - 3
liolib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: liolib.c,v 2.34 2003/03/06 19:36:44 roberto Exp roberto $
+** $Id: liolib.c,v 2.35 2003/03/11 12:24:34 roberto Exp roberto $
 ** Standard I/O (and system) library
 ** See Copyright Notice in lua.h
 */
@@ -238,7 +238,6 @@ static int g_iofile (lua_State *L, const char *name, const char *mode) {
   }
   else {
     const char *filename = lua_tostring(L, 1);
-    lua_pushstring(L, name);
     if (filename) {
       FILE **pf = newfile(L);
       *pf = fopen(filename, mode);
@@ -251,8 +250,10 @@ static int g_iofile (lua_State *L, const char *name, const char *mode) {
       tofile(L, 1);  /* check that it's a valid file handle */
       lua_pushvalue(L, 1);
     }
+    lua_pushstring(L, name);
+    lua_pushvalue(L, -2);
     lua_rawset(L, lua_upvalueindex(1));
-    return 0;
+    return 1;
   }
 }