diff options
Diffstat (limited to 'src/libtools')
| -rwxr-xr-x | src/libtools/threads32.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libtools/threads32.c b/src/libtools/threads32.c index ac75e4c3..3f43d8db 100755 --- a/src/libtools/threads32.c +++ b/src/libtools/threads32.c @@ -186,10 +186,15 @@ EXPORT int my32_pthread_create(x64emu_t *emu, void* t, void* attr, void* start_r if(attr) { size_t stsize; + static size_t minsize = 0; + if(!minsize) { + minsize = PTHREAD_STACK_MIN; + if(minsize<512*1024) minsize = 512*1024; + } if(pthread_attr_getstacksize(get_attr(attr), &stsize)==0) stacksize = stsize; - if(stacksize<512*1024) // emu and all needs some stack space, don't go too low - pthread_attr_setstacksize(get_attr(attr), 512*1024); + if(stacksize<minsize) // emu and all needs some stack space, don't go too low + pthread_attr_setstacksize(get_attr(attr), minsize); } if(GetStackSize((uintptr_t)attr, &attr_stack, &attr_stacksize)) { |