The emscripten environment is 32-bit, while it looks like your Linux is 64-bit. If you need integers larger than will fit in 32 bits, you'll need to use a long long instead of a long.
I'm not sure offhand if there's a way to get a long long result from EM_ASM but double will work there. -- brion On Tue, Feb 20, 2018 at 1:16 AM Александр Гурьянов <[email protected]> wrote: > Hi, I found that simplest function getCurrentTimeMs() work different > in browser environment (tested on origin/incoming). Code is simple: > > #include <sys/time.h> > #include <cstdio> > > int main(int, char**) { > static struct timeval tp; > gettimeofday(&tp, 0); > printf("%ld %ld %ld\n", tp.tv_sec, tp.tv_usec, tp.tv_sec * 1000 + > tp.tv_usec / 1000); > return 0; > } > > In native (linux) environment: > 1519117387 651928 1519117387651 > > In browser/node.js (em++ time.cpp -o time.js): > 1519117389 245000 -1301033539 > > Looks like overflow problem: > > #include <sys/time.h> > #include <cstdio> > > int main(int, char**) { > printf("%ld\n", 1519117387 * 1000l); > return 0; > } > > native: > 1519117387000 > > node.js: > -1301035784 > > only using 1000ll helps. > > For code: > > long time = 1519117387 * 1000l; > > emscripten compilator reports: > time.cpp:5:28: warning: overflow in expression; result is -1301035784 > with type 'long' [-Winteger-overflow] > > native is ok. Anyway it's little bit strange, don't remember this > problem before. For emscripten I should store ms in long long type? > Don't understand. > > This code also return negative values: > > #include <sys/time.h> > #include <cstdio> > #include <emscripten.h> > > int main(int, char**) { > long long time = EM_ASM_INT(( > return Date.now(); > )); > printf("%lld\n", time); > return 0; > } > > So only way is use EM_ASM_DOUBLE? is it safe? > > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
