aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library.js2
-rw-r--r--src/preamble.js16
2 files changed, 10 insertions, 8 deletions
diff --git a/src/library.js b/src/library.js
index c1eb2219..698763b6 100644
--- a/src/library.js
+++ b/src/library.js
@@ -6443,7 +6443,7 @@ LibraryManager.library = {
// var indexes = Runtime.calculateStructAlignment({ fields: ['i32', 'i32'] });
var me = _localeconv;
if (!me.ret) {
- me.ret = allocate([allocate(intArrayFromString('.'), 'i8', ALLOC_NORMAL)], 'i8*', ALLOC_NORMAL); // just decimal point, for now
+ me.ret = allocate([allocate(intArrayFromString('.'), 'i8', ALLOC_NORMAL),allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL)], 'i8*', ALLOC_NORMAL); // Allocate strings in lconv, still don't allocate chars
}
return me.ret;
},
diff --git a/src/preamble.js b/src/preamble.js
index 1c9de066..0be5b4de 100644
--- a/src/preamble.js
+++ b/src/preamble.js
@@ -529,17 +529,18 @@ function allocate(slab, types, allocator, ptr) {
}
#endif
- var i = 0, type, typeSize, previousType;
- while (i < size) {
- var curr = slab[i];
+ var index = 0, byteIndex = 0, type, typeSize, previousType;
+ while ((singleType ? index : byteIndex) < size) {
+ var curr = slab[index];
if (typeof curr === 'function') {
curr = Runtime.getFunctionIndex(curr);
}
- type = singleType || types[i];
+ type = singleType || types[byteIndex];
if (type === 0) {
- i++;
+ index++;
+ byteIndex++;
continue;
}
#if ASSERTIONS
@@ -550,14 +551,15 @@ function allocate(slab, types, allocator, ptr) {
if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later
#endif
- setValue(ret+i, curr, type);
+ setValue(ret+byteIndex, curr, type);
// no need to look up size unless type changes, so cache it
if (previousType !== type) {
typeSize = Runtime.getNativeTypeSize(type);
previousType = type;
}
- i += typeSize;
+ index++;
+ byteIndex += typeSize;
}
return ret;