/* * Copyright 2017 The Emscripten Authors. All rights reserved. * Emscripten is available under two separate licenses, the MIT license and the * University of Illinois/NCSA Open Source License. Both these licenses can be * found in the LICENSE file. */ #include #include #include #include extern const char *getDomElementContents(const char *domElementSelector); extern int isThisInWorker(void); extern int isThisInWorkerOnMainThread(void); extern int receivesAndReturnsAnInteger(int i); // Define this if compiling via -sPROXY_TO_PTHREAD // #define PROXY_TO_PTHREAD 1 int main() { char name[7] = "body"; const char *dst = getDomElementContents(name); memset(name, 0, sizeof(name)); // Try to uncover if there might be a race condition and above line was not synchronously processed, and we could take name string away. int inWorker1 = isThisInWorker(); // Build this application with -pthread -sPROXY_TO_PTHREAD for this to return 1, otherwise returns 0. int inWorker2 = isThisInWorkerOnMainThread(); // This should always return 0 int returnedInt = receivesAndReturnsAnInteger(4); printf("text: \"%s\". inWorker1: %d, inWorker2: %d, returnedInt: %d\n", dst, inWorker1, inWorker2, returnedInt); assert(strstr(dst, "