Reviewers: Sven Panne,

Description:
Merged r13235 into 3.15 branch.

Correctly handle negative codes in String.fromCharCode()

BUG=166553

[email protected]


Please review this at https://chromiumcodereview.appspot.com/11852010/

SVN Base: https://v8.googlecode.com/svn/branches/3.15

Affected files:
  M src/string.js
  M src/version.cc
  A + test/mjsunit/regress/regress-166553.js


Index: src/string.js
diff --git a/src/string.js b/src/string.js
index badfad353603a9ae2214f806e0cd30911c297521..d9ca035fb5f32983d34bc970fa24867f0acce268 100644
--- a/src/string.js
+++ b/src/string.js
@@ -824,6 +824,7 @@ function StringFromCharCode(code) {
   for (i = 0; i < n; i++) {
     var code = %_Arguments(i);
     if (!%_IsSmi(code)) code = ToNumber(code) & 0xffff;
+    if (code < 0) code = code & 0xffff;
     if (code > 0x7f) break;
     %_OneByteSeqStringSetChar(one_byte, i, code);
   }
Index: src/version.cc
diff --git a/src/version.cc b/src/version.cc
index aa55c1b86b39ee61d06bcf61bcb5174e6d550030..3901d34c0195555382a7adddb6d827ef493fb748 100644
--- a/src/version.cc
+++ b/src/version.cc
@@ -35,7 +35,7 @@
 #define MAJOR_VERSION     3
 #define MINOR_VERSION     15
 #define BUILD_NUMBER      11
-#define PATCH_LEVEL       5
+#define PATCH_LEVEL       6
 // Use 1 for candidates and 0 otherwise.
 // (Boolean macro values are not supported by all preprocessors.)
 #define IS_CANDIDATE_VERSION 0
Index: test/mjsunit/regress/regress-166553.js
diff --git a/test/mjsunit/elements-length-no-holey.js b/test/mjsunit/regress/regress-166553.js
similarity index 91%
copy from test/mjsunit/elements-length-no-holey.js
copy to test/mjsunit/regress/regress-166553.js
index 5bac296e1a65f51d9cdfa8406a7c0cb50f937a33..acaf34f4e06011ab5b28e1ce43f79f8fdac5e0aa 100644
--- a/test/mjsunit/elements-length-no-holey.js
+++ b/test/mjsunit/regress/regress-166553.js
@@ -25,9 +25,9 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

-// Flags: --allow-natives-syntax
+// Flags: --expose_gc

-a = [1,2,3];
-a.length = 1;
-assertFalse(%HasFastHoleyElements(a));
-assertTrue(%HasFastSmiElements(a));
+JSON.stringify(String.fromCharCode(1, -11).toString())
+gc();
+var s = String.fromCharCode(1, -11)
+assertEquals(65525, s.charCodeAt(1))


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to