Browse Source

accept Data objects in newFileData

megagrump 3 years ago
parent
commit
b359311832
1 changed files with 13 additions and 2 deletions
  1. 13 2
      src/modules/filesystem/wrap_Filesystem.cpp

+ 13 - 2
src/modules/filesystem/wrap_Filesystem.cpp

@@ -331,11 +331,22 @@ int w_newFileData(lua_State *L)
 	}
 	}
 
 
 	size_t length = 0;
 	size_t length = 0;
-	const char *str = luaL_checklstring(L, 1, &length);
+	const void *ptr = nullptr;
+	if (luax_istype(L, 1, Data::type))
+	{
+		Data *data = data::luax_checkdata(L, 1);
+		ptr = data->getData();
+		length = data->getSize();
+	}
+	else if (lua_isstring(L, 1))
+		ptr = luaL_checklstring(L, 1, &length);
+	else
+		return luaL_argerror(L, 1, "string or Data expected");
+
 	const char *filename = luaL_checkstring(L, 2);
 	const char *filename = luaL_checkstring(L, 2);
 
 
 	FileData *t = nullptr;
 	FileData *t = nullptr;
-	luax_catchexcept(L, [&](){ t = instance()->newFileData(str, length, filename); });
+	luax_catchexcept(L, [&](){ t = instance()->newFileData(ptr, length, filename); });
 
 
 	luax_pushtype(L, t);
 	luax_pushtype(L, t);
 	t->release();
 	t->release();