Fixed Memory Leaks. :)
This commit is contained in:
@@ -101,11 +101,14 @@
|
||||
)(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
// NOTE(Felix): we have to copy the string because we need
|
||||
// it to be mutable for the parser to work, because the
|
||||
// parser relys on being able to temporaily put in markers
|
||||
// in the code
|
||||
// NOTE(Felix): we have to copy the string because we need it to be
|
||||
// mutable for the parser to work, because the parser relys on being
|
||||
// able to temporaily put in markers in the code and also it will fill
|
||||
// out the source code location
|
||||
#define _define_helper(def, docs, special) \
|
||||
Parser::parser_file = file_name_built_ins; \
|
||||
Parser::parser_line = __LINE__; \
|
||||
Parser::parser_col = 0; \
|
||||
auto label(params,__LINE__) = Parser::parse_single_expression( \
|
||||
Memory::get_c_str(Memory::create_string(#def))); \
|
||||
if_error_log_location_and_return(); \
|
||||
@@ -115,13 +118,9 @@
|
||||
auto label(sfun,__LINE__) = Memory::create_lisp_object_cfunction(special); \
|
||||
create_arguments_from_lambda_list_and_inject(label(params,__LINE__)->value.pair.rest, label(sfun,__LINE__)); \
|
||||
if_error_log_location_and_return(); \
|
||||
label(sfun,__LINE__)->sourceCodeLocation = new(Source_Code_Location); \
|
||||
label(sfun,__LINE__)->sourceCodeLocation->file = file_name_built_ins; \
|
||||
label(sfun,__LINE__)->sourceCodeLocation->line = __LINE__; \
|
||||
label(sfun,__LINE__)->sourceCodeLocation->column = 0; \
|
||||
label(sfun,__LINE__)->docstring = Memory::create_string(docs); \
|
||||
define_symbol(label(sym,__LINE__), label(sfun,__LINE__)); \
|
||||
label(sfun,__LINE__)->value.cFunction->body = (std::function<Lisp_Object* ()>)[&]() -> Lisp_Object*
|
||||
label(sfun,__LINE__)->value.cFunction->body = []() -> Lisp_Object*
|
||||
|
||||
#define define(def, docs) _define_helper(def, docs, false)
|
||||
#define define_special(def, docs) _define_helper(def, docs, true)
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
// #include <functional>
|
||||
#include "ftb/arraylist.hpp"
|
||||
#include "ftb/hashmap.hpp"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user