# HG changeset patch # User Jaroslav Tulach # Date 1399886326 -7200 # Node ID 69fb5d5d734acd77ed6d4e00bd76ca157fb2d9d9 # Parent 0c5a8b83182af5f32e5b253a0135064a94a38430 Only do range check when the array value is not defined diff -r 0c5a8b83182a -r 69fb5d5d734a rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_String.js --- a/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_String.js Sun May 11 23:06:45 2014 +0200 +++ b/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_String.js Mon May 12 11:18:46 2014 +0200 @@ -3,15 +3,17 @@ vm.java_lang_String(false); Array.at = function(arr, indx, value) { - if (indx < 0 || indx >= arr.length) { - var e = vm.java_lang_ArrayIndexOutOfBoundsException(true); - e.constructor.cons__VLjava_lang_String_2.call(e, indx.toString()); - throw e; + var prev = arr[indx]; + if (typeof prev === 'undefined' && (x < 0 || indx >= arr.length)) { + var e = vm.java_lang_ArrayIndexOutOfBoundsException(true); + e.constructor.cons__VLjava_lang_String_2.call(e, indx.toString()); + throw e; } if (arguments.length === 3) { - arr[indx] = value; + arr[indx] = value; + } else { + return prev; } - return arr[indx]; }; Array.prototype.getClass__Ljava_lang_Class_2 = function() { return vm.java_lang_Class(false).defineArray__Ljava_lang_Class_2Ljava_lang_String_2Ljava_lang_Object_2(this.jvmName, this.fnc);