Skip to content

Commit eeb9b80

Browse files
at
1 parent fea5869 commit eeb9b80

File tree

12 files changed

+180
-43
lines changed

12 files changed

+180
-43
lines changed

.idea/editor.xml

Lines changed: 103 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.vscode/settings.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@
22
"files.associations": {
33
"custom_math.h": "c",
44
"pthread.h": "c"
5-
}
5+
},
6+
"terminal.explorerKind": "external",
7+
"terminal.integrated.accessibleViewFocusOnCommandExecution": true,
8+
"terminal.integrated.accessibleViewPreserveCursorPosition": true
69
}

LuaCEmbed.h

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22651,14 +22651,14 @@ LUALIB_API void luaL_checkversion_ (lua_State *L, lua_Number ver, size_t sz) {
2265122651
#define PRIVATE_LUA_CEMBED_MAIN_META_TABLE "private_lua_c_embed_main_meta_table"
2265222652

2265322653

22654-
#define PRIVATE_LUA_CEMBE_SUB_ARG_TABLE "private_lua_c_embed_table_arg_%s_%d"
2265522654
#define PRIVATE_LUA_CEMBED_ANONYMOUS_TABLE "private_lua_c_embed_anononymous_table_%ld"
2265622655
#define PRIVATE_LUA_CEMBED_ANONYMOUS_FUNC_TABLE "private_lua_c_embed_anononymous_func_table_%ld"
2265722656

2265822657
#define PRIVATE_LUA_CEMBED_SELFNAME "private_lua_c_embed_self"
2265922658
#define PRIVATE_LUA_CEMBED_MULTIRETURN "private_lua_c_embed_multi_return%d"
2266022659
#define PRIVATE_LUA_CEMBED_STAGE_AREA_TABLE "private_lua_c_embed_stage_area_table"
2266122660
#define PRIVATE_LUA_CEMBED_ARGS "private_lua_c_embed_args%d"
22661+
#define PRIVATE_LUA_CEMBED_TABLE_RETURN "private_lua_embed_table_return"
2266222662

2266322663

2266422664

@@ -22815,6 +22815,8 @@ int private_lua_cEmbed_unpack(LuaCEmbedTable *self,const char * previews_functi
2281522815

2281622816
void privateLuaCEmbedTable_free(LuaCEmbedTable *self);
2281722817

22818+
void privateLuaCEmbedTable_free_setting_nill(LuaCEmbedTable *self);
22819+
2281822820

2281922821

2282022822

@@ -23483,14 +23485,16 @@ LuaCEmbedResponse * LuaCEmbed_send_error(const char *text){
2348323485
LuaCEmbedResponse * LuaCEmbed_send_multi_return(LuaCEmbedTable *table){
2348423486
LuaCEmbedResponse * self= private_LuaCEmbedReturn_raw();
2348523487
self->type = PRIVATE_LUA_CEMBED_MULTI_RESPONSE;
23486-
self->string_val = strdup(table->global_name);
23488+
lua_getglobal(table->main_object->state,table->global_name);
23489+
lua_setglobal(table->main_object->state,PRIVATE_LUA_CEMBED_TABLE_RETURN);
2348723490
return self;
2348823491
}
2348923492

2349023493
LuaCEmbedResponse * LuaCEmbed_send_table(LuaCEmbedTable *table){
2349123494
LuaCEmbedResponse * self= private_LuaCEmbedReturn_raw();
2349223495
self->type = PRIVATE_LUA_CEMBED_TABLE_RESPONSE;
23493-
self->string_val = strdup(table->global_name);
23496+
lua_getglobal(table->main_object->state,table->global_name);
23497+
lua_setglobal(table->main_object->state,PRIVATE_LUA_CEMBED_TABLE_RETURN);
2349423498
return self;
2349523499
}
2349623500

@@ -24071,10 +24075,8 @@ LuaCEmbedTable * private_newLuaCembedTable(LuaCEmbed *main_embed, const char *fo
2407124075

2407224076
return (int)size;
2407324077
}
24074-
2407524078
void privateLuaCEmbedTable_free(LuaCEmbedTable *self){
2407624079

24077-
2407824080
free(self->global_name);
2407924081

2408024082
if(self->prop_name){
@@ -24085,6 +24087,13 @@ void privateLuaCEmbedTable_free(LuaCEmbedTable *self){
2408524087
free(self);
2408624088
}
2408724089

24090+
void privateLuaCEmbedTable_free_setting_nill(LuaCEmbedTable *self){
24091+
24092+
lua_getglobal(self->main_object->state,self->global_name);
24093+
lua_pushnil(self->main_object->state);
24094+
privateLuaCEmbedTable_free(self);
24095+
}
24096+
2408824097

2408924098

2409024099

@@ -25265,7 +25274,7 @@ void privateLuaCEmbedTableArray_free(privateLuaCEmbedTableArray *self){
2526525274

2526625275
for(int i = 0; i < self->size;i++){
2526725276
LuaCEmbedTable *current_table = self->tables[i];
25268-
privateLuaCEmbedTable_free(current_table);
25277+
privateLuaCEmbedTable_free_setting_nill(current_table);
2526925278

2527025279
}
2527125280

@@ -25520,7 +25529,7 @@ int privateLuaCEmbed_main_callback_handler(lua_State *L){
2552025529
const char *func_name = lua_tostring(L,lua_upvalueindex(3));
2552125530
self->current_function = func_name;
2552225531
bool func_tables_created_in_these_scope = false;
25523-
25532+
//these its nescessary for function clojures like map, filter, where the stack will be increased
2552425533
if(self->func_tables == NULL) {
2552525534
self->func_tables = (void*)newprivateLuaCEmbedTableArray();
2552625535
func_tables_created_in_these_scope = true;
@@ -25537,14 +25546,15 @@ int privateLuaCEmbed_main_callback_handler(lua_State *L){
2553725546
LuaCEmbedTable *table = private_newLuaCembedTable(self, PRIVATE_LUA_CEMBED_SELFNAME);
2553825547
method_callback = (LuaCEmbedResponse *(*)(LuaCEmbedTable *tb, LuaCEmbed *self))lua_touserdata(L, lua_upvalueindex(5));
2553925548
possible_return = method_callback(table,self);
25540-
privateLuaCEmbedTable_free(table);
25549+
privateLuaCEmbedTable_free_setting_nill(table);
2554125550
}
2554225551

2554325552
if(is_a_function){
2554425553
LuaCEmbedResponse *(*function_callback)(LuaCEmbed *self);
2554525554
function_callback = (LuaCEmbedResponse *(*)(LuaCEmbed *self))lua_touserdata(L, lua_upvalueindex(4));
2554625555
possible_return = function_callback(self);
2554725556
}
25557+
2554825558
if(func_tables_created_in_these_scope) {
2554925559
privateLuaCEmbedTableArray_free((privateLuaCEmbedTableArray*)self->func_tables);
2555025560
self->func_tables = NULL;
@@ -25598,14 +25608,14 @@ int privateLuaCEmbed_main_callback_handler(lua_State *L){
2559825608
}
2559925609

2560025610
if(possible_return->type == PRIVATE_LUA_CEMBED_TABLE_RESPONSE){
25601-
lua_getglobal(self->state, possible_return->string_val);
25611+
lua_getglobal(self->state, PRIVATE_LUA_CEMBED_TABLE_RETURN);
2560225612
lua_pushvalue(self->state,-1);
2560325613
private_LuaCEmbedResponse_free(possible_return);
2560425614
return PRIVATE_LUACEMBED_ONE_RETURN;
2560525615
}
2560625616

2560725617
if(possible_return->type == PRIVATE_LUA_CEMBED_MULTI_RESPONSE){
25608-
LuaCEmbedTable *table = private_newLuaCembedTable(self, possible_return->string_val);
25618+
LuaCEmbedTable *table = private_newLuaCembedTable(self, PRIVATE_LUA_CEMBED_TABLE_RETURN);
2560925619
int size =private_lua_cEmbed_unpack(table,NULL);
2561025620
private_LuaCEmbedResponse_free(possible_return);
2561125621
privateLuaCEmbedTable_free(table);

main

-9.27 KB
Binary file not shown.

0 commit comments

Comments
 (0)