Fixed some memleaks (#8107)

Improved memleak location reporting for parse_script
This commit is contained in:
Lemongrass3110 2024-01-17 18:58:13 +01:00 committed by GitHub
parent f5909c3d78
commit d3fcb66d3a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 7 additions and 9 deletions

View File

@ -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;
}

View File

@ -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;

View File

@ -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;

View File

@ -10,6 +10,7 @@
#include <common/database.hpp>
#include <common/cbasetypes.hpp>
#include <common/db.hpp>
#include <common/malloc.hpp>
#include <common/mmo.hpp>
#include <common/timer.hpp>
@ -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);