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.