about summary refs log tree commit diff stats
path: root/src/wrapped
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-06-15 09:58:00 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-06-15 09:58:00 +0200
commit4d068eee26809e491fb3ff6e115222630f3288bc (patch)
tree10c0681831d4e156ce82c0bd5c49a64b0f66fcb5 /src/wrapped
parentece732ba41a7e6e516de081eaf2f0cb465e8115e (diff)
downloadbox64-4d068eee26809e491fb3ff6e115222630f3288bc.tar.gz
box64-4d068eee26809e491fb3ff6e115222630f3288bc.zip
This should fix slatest steam on linux not starting
Diffstat (limited to 'src/wrapped')
-rw-r--r--src/wrapped/wrappedglib2.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/wrapped/wrappedglib2.c b/src/wrapped/wrappedglib2.c
index df87f222..5cfa075f 100644
--- a/src/wrapped/wrappedglib2.c
+++ b/src/wrapped/wrappedglib2.c
@@ -1346,20 +1346,25 @@ typedef struct my_GOptionEntry_s {
 EXPORT void my_g_option_context_add_main_entries(x64emu_t* emu, void* context, my_GOptionEntry_t* entries, void* domain)
 {
     my_GOptionEntry_t* p = entries;
-    while (p->long_name) {
+    int idx = 0;
+    while (p && p->long_name) {
         // wrap Callbacks
-        if (p->arg == 3)
-            p->arg_data = findGOptionArgFct(p->arg_data);
         ++p;
+        ++idx;
     }
-    my->g_option_context_add_main_entries(context, entries, domain);
     p = entries;
-    while (p->long_name) {
-        // unwrap Callbacks
+    my_GOptionEntry_t my_entries[idx+1];
+    idx = 0;
+    while (p && p->long_name) {
+        // wrap Callbacks
+        my_entries[idx] = *p;
         if (p->arg == 3)
-            p->arg_data = reverseGOptionArgFct(p->arg_data);
+            my_entries[idx].arg_data = findGOptionArgFct(p->arg_data);
         ++p;
+        ++idx;
     }
+    if(p) my_entries[idx] = *p;
+    my->g_option_context_add_main_entries(context, entries?my_entries:NULL, domain);
 }
 
 EXPORT void* my_g_strconcat(x64emu_t* emu, void* first, uintptr_t* data)