Просмотр исходного кода

lua: use heap allocator for the script

Fixes: #238
Daniele Bartolini 1 год назад
Родитель
Сommit
cbad1d1f53
2 измененных файлов с 9 добавлено и 6 удалено
  1. 1 0
      docs/changelog.rst
  2. 8 6
      src/lua/lua_environment.cpp

+ 1 - 0
docs/changelog.rst

@@ -7,6 +7,7 @@ Changelog
 **Tools**
 
 * Fixed a crash when editing many objects simultaneusly.
+* Fixed a crash when trying to load levels with many objects.
 
 **Runtime**
 

+ 8 - 6
src/lua/lua_environment.cpp

@@ -586,11 +586,12 @@ void LuaEnvironment::reset_temporaries()
 #endif
 }
 
-static void console_command_script(ConsoleServer & /*cs*/, u32 /*client_id*/, const char *json, void *user_data)
+static void console_command_script(ConsoleServer &cs, u32 client_id, const char *json, void *user_data)
 {
-	TempAllocator4096 ta;
+	CE_UNUSED_2(cs, client_id);
+	TempAllocator1024 ta;
 	JsonObject obj(ta);
-	DynamicString script(ta);
+	DynamicString script(default_allocator());
 
 	sjson::parse(obj, json);
 	sjson::parse_string(script, obj["script"]);
@@ -618,11 +619,12 @@ static void do_REPL(LuaEnvironment *env, const char *lua)
 	return;
 }
 
-static void console_command_REPL(ConsoleServer & /*cs*/, u32 /*client_id*/, const char *json, void *user_data)
+static void console_command_REPL(ConsoleServer &cs, u32 client_id, const char *json, void *user_data)
 {
-	TempAllocator4096 ta;
+	CE_UNUSED_2(cs, client_id);
+	TempAllocator1024 ta;
 	JsonObject obj(ta);
-	DynamicString script(ta);
+	DynamicString script(default_allocator());
 
 	sjson::parse(obj, json);
 	sjson::parse_string(script, obj["repl"]);