From 1197d224fb741706ade9c2da38fb9a0557c94a8e Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Thu, 17 Jan 2013 14:28:31 +0100 Subject: [PATCH] Fix entries for non-matches in the results array of RegExp.exec A capture that failed to match should result an entry in the results array with value undefined. Change-Id: I08fedfc59cda752b209e79ff8abf7ee105a0c527 Reviewed-by: Lars Knoll --- qv4ecmaobjects.cpp | 4 +++- tests/TestExpectations | 17 ----------------- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/qv4ecmaobjects.cpp b/qv4ecmaobjects.cpp index 3f1ad3c..61abadc 100644 --- a/qv4ecmaobjects.cpp +++ b/qv4ecmaobjects.cpp @@ -2915,8 +2915,10 @@ Value RegExpPrototype::method_exec(ExecutionContext *ctx) for (int i = 0; i < r->value->captureCount(); ++i) { int start = matchOffsets[i * 2]; int end = matchOffsets[i * 2 + 1]; + Value entry = Value::undefinedValue(); if (start != -1 && end != -1) - array->array.push_back(Value::fromString(ctx, s.mid(start, end - start))); + entry = Value::fromString(ctx, s.mid(start, end - start)); + array->array.push_back(entry); } array->__put__(ctx, QLatin1String("index"), Value::fromInt32(result)); diff --git a/tests/TestExpectations b/tests/TestExpectations index 7284105..499caca 100644 --- a/tests/TestExpectations +++ b/tests/TestExpectations @@ -377,35 +377,18 @@ S15.1.2.2_A9.2 failing S15.1.2.2_A9.3 failing S15.1.2.2_A9.4 failing S15.1.2.2_A9.7 failing -S15.10.2.3_A1_T15 failing -S15.10.2.3_A1_T17 failing -S15.10.2.3_A1_T2 failing -S15.10.2.5_A1_T4 failing S15.10.2.12_A6_T1 failing S15.10.2.12_A1_T1 failing S15.10.2.12_A2_T1 failing S15.10.2.12_A3_T1 failing S15.10.2.12_A4_T1 failing S15.10.2.12_A5_T1 failing -S15.10.2.7_A5_T2 failing -S15.10.2.8_A1_T4 failing -S15.10.2.8_A2_T1 failing S15.10.2.8_A3_T15 failing S15.10.2.8_A3_T16 failing S15.10.2.8_A3_T17 failing S15.10.2.8_A3_T18 failing -S15.10.2.8_A3_T19 failing -S15.10.2.8_A3_T2 failing -S15.10.2.8_A3_T22 failing -S15.10.2.8_A3_T25 failing -S15.10.2.8_A3_T26 failing -S15.10.2.8_A3_T27 failing -S15.10.2.8_A3_T28 failing -S15.10.2.8_A3_T29 failing -S15.10.2.9_A1_T2 failing S15.10.5_A1 failing S15.10.6.2_A1_T2 failing -S15.10.6.2_A1_T6 failing S15.10.6.2_A4_T1 failing S15.10.6.2_A4_T10 failing S15.10.6.2_A4_T11 failing -- 2.7.4