diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-01-15 17:11:28 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-01-15 17:11:28 +0100 |
| commit | 613781e6c0eacd4184eb244830d519f72ec9df1c (patch) | |
| tree | a398a10c623382298ed81efcf6e51d5c1e1e72f2 /src | |
| parent | 92c3c1f829ca9af41ce3bbfbefc8c1229af818be (diff) | |
| download | box64-613781e6c0eacd4184eb244830d519f72ec9df1c.tar.gz box64-613781e6c0eacd4184eb244830d519f72ec9df1c.zip | |
Fixed xcb_connect wrapping
Diffstat (limited to 'src')
| -rw-r--r-- | src/libtools/myalign.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/libtools/myalign.c b/src/libtools/myalign.c index 01701346..ea652f94 100644 --- a/src/libtools/myalign.c +++ b/src/libtools/myalign.c @@ -1240,12 +1240,15 @@ void* align_xcb_connection(void* src) for(int i=0; i<NXCB && !dest; ++i) if(src==&x64_xcb_connects[i]) dest = my_xcb_connects[i]; + #if 1 if(!dest) dest = add_xcb_connection(src); + #else if(!dest) { printf_log(LOG_NONE, "BOX64: Error, xcb_connect %p not found\n", src); - return src; + abort(); } + #endif // do not update most values x64_xcb_connection_t* source = src; dest->has_error = source->has_error; @@ -1292,6 +1295,12 @@ void* add_xcb_connection(void* src) { if(!src) return src; + // check if already exist + for(int i=0; i<NXCB; ++i) + if(my_xcb_connects[i] == src) { + unalign_xcb_connection(src, &x64_xcb_connects[i]); + return &x64_xcb_connects[i]; + } // find a free slot for(int i=0; i<NXCB; ++i) if(!my_xcb_connects[i]) { @@ -1309,8 +1318,8 @@ void del_xcb_connection(void* src) return; // find it for(int i=0; i<NXCB; ++i) - if(src==my_xcb_connects[i]) { - my_xcb_connects[i] = 0; + if(src==&x64_xcb_connects[i]) { + my_xcb_connects[i] = NULL; memset(&x64_xcb_connects[i], 0, sizeof(x64_xcb_connection_t)); return; } |