diff --git a/src/map/itemdb.cpp b/src/map/itemdb.cpp index 72acad6ebc..25daa3de28 100644 --- a/src/map/itemdb.cpp +++ b/src/map/itemdb.cpp @@ -4290,7 +4290,7 @@ uint64 RandomOptionDatabase::parseBodyNode(const ryml::NodeRef& node) { return 0; if (randopt->script) { - aFree(randopt->script); + script_free_code( randopt->script ); randopt->script = nullptr; } diff --git a/src/map/npc.cpp b/src/map/npc.cpp index 391cbbe25f..de1fa07c02 100644 --- a/src/map/npc.cpp +++ b/src/map/npc.cpp @@ -5159,10 +5159,7 @@ static const char* npc_parse_function(char* w1, char* w2, char* w3, char* w4, co struct script_code *oldscript = (struct script_code*)db_data2ptr(&old_data); ShowInfo("npc_parse_function: Overwriting user function [%s] (%s:%d)\n", w3, filepath, strline(buffer,start-buffer)); - script_stop_scriptinstances(oldscript); - script_free_vars(oldscript->local.vars); - aFree(oldscript->script_buf); - aFree(oldscript); + script_free_code( oldscript ); } return end; diff --git a/src/map/script.cpp b/src/map/script.cpp index 43087d8b17..bb817be7a6 100644 --- a/src/map/script.cpp +++ b/src/map/script.cpp @@ -2472,8 +2472,7 @@ void script_warning(const char* src, const char* file, int start_line, const cha /*========================================== * Analysis of the script *------------------------------------------*/ -struct script_code* parse_script(const char *src,const char *file,int line,int options) -{ +struct script_code* parse_script_( const char *src, const char *file, int line, int options, const char* src_file, int src_line, const char* src_func ){ const char *p,*tmpp; int i; struct script_code* code = NULL; @@ -2653,7 +2652,7 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o } #endif - CREATE(code,struct script_code,1); + CREATE2( code, struct script_code, 1, src_file, src_line, src_func ); code->script_buf = script_buf; code->script_size = script_size; code->local.vars = NULL; diff --git a/src/map/script.hpp b/src/map/script.hpp index 4580f54e37..3c0c6b1286 100644 --- a/src/map/script.hpp +++ b/src/map/script.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -2205,7 +2206,8 @@ void script_error(const char* src, const char* file, int start_line, const char* void script_warning(const char* src, const char* file, int start_line, const char* error_msg, const char* error_pos); bool is_number(const char *p); -struct script_code* parse_script(const char* src,const char* file,int line,int options); +struct script_code* parse_script_( const char *src, const char *file, int line, int options, const char* src_file, int src_line, const char* src_func ); +#define parse_script( src, file, line, options ) parse_script_( ( src ), ( file ), ( line ), ( options ), ALC_MARK ) void run_script(struct script_code *rootscript,int pos,int rid,int oid); bool set_reg_num(struct script_state* st, map_session_data* sd, int64 num, const char* name, const int64 value, struct reg_db *ref);