Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Unified Diff: patches/utext.patch

Issue 2442923002: ICU update to 58 part 2 (Closed)
Patch Set: apply more patches and updates; almost ready to roll Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « patches/tzdetect.patch ('k') | patches/utf32.patch » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: patches/utext.patch
diff --git a/patches/utext.patch b/patches/utext.patch
deleted file mode 100644
index 7f53e6b41ddffd0aef98a9b1a9bd5ca626964401..0000000000000000000000000000000000000000
--- a/patches/utext.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-diff --git a/source/common/utext.cpp b/source/common/utext.cpp
-index 6dc31a0..0c7dd1e 100644
---- a/source/common/utext.cpp
-+++ b/source/common/utext.cpp
-@@ -1,7 +1,7 @@
- /*
- *******************************************************************************
- *
--* Copyright (C) 2005-2015, International Business Machines
-+* Copyright (C) 2005-2016, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
-@@ -2524,6 +2524,7 @@ ucstrTextExtract(UText *ut,
- ut->chunkLength = si;
- ut->nativeIndexingLimit = si;
- strLength = si;
-+ limit32 = si;
- break;
- }
- U_ASSERT(di>=0); /* to ensure di never exceeds INT32_MAX, which must not happen logically */
-@@ -2545,16 +2546,21 @@ ucstrTextExtract(UText *ut,
- // If the limit index points to a lead surrogate of a pair,
- // add the corresponding trail surrogate to the destination.
- if (si>0 && U16_IS_LEAD(s[si-1]) &&
-- ((si<strLength || strLength<0) && U16_IS_TRAIL(s[si])))
-+ ((si<strLength || strLength<0) && U16_IS_TRAIL(s[si])))
- {
- if (di<destCapacity) {
- // store only if there is space in the output buffer.
-- dest[di++] = s[si++];
-+ dest[di++] = s[si];
- }
-+ si++;
- }
-
- // Put iteration position at the point just following the extracted text
-- ut->chunkOffset = uprv_min(strLength, start32 + destCapacity);
-+ if (si <= ut->chunkNativeLimit) {
-+ ut->chunkOffset = si;
-+ } else {
-+ ucstrTextAccess(ut, si, TRUE);
-+ }
-
- // Add a terminating NUL if space in the buffer permits,
- // and set the error status as required.
-diff --git a/source/test/intltest/utxttest.cpp b/source/test/intltest/utxttest.cpp
-index d8bedb6..801337c 100644
---- a/source/test/intltest/utxttest.cpp
-+++ b/source/test/intltest/utxttest.cpp
-@@ -1,6 +1,6 @@
- /********************************************************************
- * COPYRIGHT:
-- * Copyright (c) 2005-2014, International Business Machines Corporation and
-+ * Copyright (c) 2005-2016, International Business Machines Corporation and
- * others. All Rights Reserved.
- ********************************************************************/
- /************************************************************************
-@@ -16,6 +16,8 @@
- #include "unicode/utf8.h"
- #include "unicode/ustring.h"
- #include "unicode/uchriter.h"
-+#include "cmemory.h"
-+#include "cstr.h"
- #include "utxttest.h"
-
- static UBool gFailed = FALSE;
-@@ -61,6 +63,8 @@ UTextTest::runIndexedTest(int32_t index, UBool exec,
- if (exec) Ticket10562(); break;
- case 6: name = "Ticket10983";
- if (exec) Ticket10983(); break;
-+ case 7: name = "Ticket12130";
-+ if (exec) Ticket12130(); break;
- default: name = ""; break;
- }
- }
-@@ -1501,3 +1505,79 @@ void UTextTest::Ticket10983() {
-
- utext_close(ut);
- }
-+
-+// Ticket 12130 - extract on a UText wrapping a null terminated UChar * string
-+// leaves the iteration position set incorrectly when the
-+// actual string length is not yet known.
-+//
-+// The test text needs to be long enough that UText defers getting the length.
-+
-+void UTextTest::Ticket12130() {
-+ UErrorCode status = U_ZERO_ERROR;
-+
-+ const char *text8 =
-+ "Fundamentally, computers just deal with numbers. They store letters and other characters "
-+ "by assigning a number for each one. Before Unicode was invented, there were hundreds "
-+ "of different encoding systems for assigning these numbers. No single encoding could "
-+ "contain enough characters: for example, the European Union alone requires several "
-+ "different encodings to cover all its languages. Even for a single language like "
-+ "English no single encoding was adequate for all the letters, punctuation, and technical "
-+ "symbols in common use.";
-+
-+ UnicodeString str(text8);
-+ const UChar *ustr = str.getTerminatedBuffer();
-+ UText ut = UTEXT_INITIALIZER;
-+ utext_openUChars(&ut, ustr, -1, &status);
-+ UChar extractBuffer[50];
-+
-+ for (int32_t startIdx = 0; startIdx<str.length(); ++startIdx) {
-+ int32_t endIdx = startIdx + 20;
-+
-+ u_memset(extractBuffer, 0, UPRV_LENGTHOF(extractBuffer));
-+ utext_extract(&ut, startIdx, endIdx, extractBuffer, UPRV_LENGTHOF(extractBuffer), &status);
-+ if (U_FAILURE(status)) {
-+ errln("%s:%d %s", __FILE__, __LINE__, u_errorName(status));
-+ return;
-+ }
-+ int64_t ni = utext_getNativeIndex(&ut);
-+ int64_t expectedni = startIdx + 20;
-+ if (expectedni > str.length()) {
-+ expectedni = str.length();
-+ }
-+ if (expectedni != ni) {
-+ errln("%s:%d utext_getNativeIndex() expected %d, got %d", __FILE__, __LINE__, expectedni, ni);
-+ }
-+ if (0 != str.tempSubString(startIdx, 20).compare(extractBuffer)) {
-+ errln("%s:%d utext_extract() failed. expected \"%s\", got \"%s\"",
-+ __FILE__, __LINE__, CStr(str.tempSubString(startIdx, 20))(), CStr(UnicodeString(extractBuffer))());
-+ }
-+ }
-+ utext_close(&ut);
-+
-+ // Similar utext extract, this time with the string length provided to the UText in advance,
-+ // and a buffer of larger than required capacity.
-+
-+ utext_openUChars(&ut, ustr, str.length(), &status);
-+ for (int32_t startIdx = 0; startIdx<str.length(); ++startIdx) {
-+ int32_t endIdx = startIdx + 20;
-+ u_memset(extractBuffer, 0, UPRV_LENGTHOF(extractBuffer));
-+ utext_extract(&ut, startIdx, endIdx, extractBuffer, UPRV_LENGTHOF(extractBuffer), &status);
-+ if (U_FAILURE(status)) {
-+ errln("%s:%d %s", __FILE__, __LINE__, u_errorName(status));
-+ return;
-+ }
-+ int64_t ni = utext_getNativeIndex(&ut);
-+ int64_t expectedni = startIdx + 20;
-+ if (expectedni > str.length()) {
-+ expectedni = str.length();
-+ }
-+ if (expectedni != ni) {
-+ errln("%s:%d utext_getNativeIndex() expected %d, got %d", __FILE__, __LINE__, expectedni, ni);
-+ }
-+ if (0 != str.tempSubString(startIdx, 20).compare(extractBuffer)) {
-+ errln("%s:%d utext_extract() failed. expected \"%s\", got \"%s\"",
-+ __FILE__, __LINE__, CStr(str.tempSubString(startIdx, 20))(), CStr(UnicodeString(extractBuffer))());
-+ }
-+ }
-+ utext_close(&ut);
-+}
-diff --git a/source/test/intltest/utxttest.h b/source/test/intltest/utxttest.h
-index 7091655..346563d 100644
---- a/source/test/intltest/utxttest.h
-+++ b/source/test/intltest/utxttest.h
-@@ -1,6 +1,6 @@
- /********************************************************************
- * COPYRIGHT:
-- * Copyright (c) 2005-2014, International Business Machines Corporation and
-+ * Copyright (c) 2005-2016, International Business Machines Corporation and
- * others. All Rights Reserved.
- ********************************************************************/
- /************************************************************************
-@@ -35,6 +35,7 @@ public:
- void Ticket6847();
- void Ticket10562();
- void Ticket10983();
-+ void Ticket12130();
-
- private:
- struct m { // Map between native indices & code points.
« no previous file with comments | « patches/tzdetect.patch ('k') | patches/utf32.patch » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698