Browse Source

Workaround for broken Android sprintf("%g", -0.0).

Mike Pall 13 years ago
parent
commit
93e4040b60
1 changed files with 3 additions and 0 deletions
  1. 3 0
      src/lj_str.c

+ 3 - 0
src/lj_str.c

@@ -174,6 +174,9 @@ size_t LJ_FASTCALL lj_str_bufnum(char *s, cTValue *o)
 {
   if (LJ_LIKELY((o->u32.hi << 1) < 0xffe00000)) {  /* Finite? */
     lua_Number n = o->n;
+#if __BIONIC__
+    if (tvismzero(o)) { s[0] = '-'; s[1] = '0'; return 2; }
+#endif
     return (size_t)lua_number2str(s, n);
   } else if (((o->u32.hi & 0x000fffff) | o->u32.lo) != 0) {
     s[0] = 'n'; s[1] = 'a'; s[2] = 'n'; return 3;