X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2Ficu%2Fsource%2Fi18n%2Fuspoof_wsconf.cpp;h=ca232834fa2a0be1daf4c481f5802c807849aa07;hb=4a1a0bdd01eef90b0826a0e761d3379d3715c10f;hp=37232440746c431777bf9a32e738e8692bbfa72c;hpb=b1be5ca53587d23e7aeb77b26861fdc0a181ffd8;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/icu/source/i18n/uspoof_wsconf.cpp b/src/third_party/icu/source/i18n/uspoof_wsconf.cpp index 3723244..ca23283 100644 --- a/src/third_party/icu/source/i18n/uspoof_wsconf.cpp +++ b/src/third_party/icu/source/i18n/uspoof_wsconf.cpp @@ -1,7 +1,7 @@ /* ****************************************************************************** * -* Copyright (C) 2008-2009, International Business Machines +* Copyright (C) 2008-2013, International Business Machines * Corporation and others. All Rights Reserved. * ****************************************************************************** @@ -29,6 +29,7 @@ #include "unicode/uregex.h" #include "unicode/ustring.h" #include "cmemory.h" +#include "scriptset.h" #include "uspoof_impl.h" #include "uhash.h" #include "uvector.h" @@ -52,7 +53,6 @@ U_NAMESPACE_USE // The expression will match _all_ lines, including erroneous lines. // The result of the parse is returned via the contents of the (match) groups. static const char *parseExp = - "(?m)" // Multi-line mode "^([ \\t]*(?:#.*?)?)$" // A blank or comment line. Matches Group 1. "|^(?:" // OR @@ -88,6 +88,8 @@ static void extractGroup( +U_NAMESPACE_BEGIN + // Build the Whole Script Confusable data // // TODO: Reorganize. Either get rid of the WSConfusableDataBuilder class, @@ -115,7 +117,8 @@ void buildWSConfusableData(SpoofImpl *spImpl, const char * confusablesWS, anyCaseTrie = utrie2_open(0, 0, &status); lowerCaseTrie = utrie2_open(0, 0, &status); - + + UnicodeString pattern(parseExp, -1, US_INV); // The scriptSets vector provides a mapping from TRIE values to the set of scripts. // @@ -150,10 +153,8 @@ void buildWSConfusableData(SpoofImpl *spImpl, const char * confusablesWS, } u_strFromUTF8(input, inputLen+1, NULL, confusablesWS, confusablesWSLen, &status); + parseRegexp = uregex_open(pattern.getBuffer(), pattern.length(), 0, NULL, &status); - - parseRegexp = uregex_openC(parseExp, 0, NULL, &status); - // Zap any Byte Order Mark at the start of input. Changing it to a space is benign // given the syntax of the input. if (*input == 0xfeff) { @@ -164,8 +165,6 @@ void buildWSConfusableData(SpoofImpl *spImpl, const char * confusablesWS, uregex_setText(parseRegexp, input, inputLen, &status); while (uregex_findNext(parseRegexp, &status)) { lineNum++; - UChar line[200]; - uregex_group(parseRegexp, 0, line, 200, &status); if (uregex_start(parseRegexp, 1, &status) >= 0) { // this was a blank or comment line. continue; @@ -246,8 +245,8 @@ void buildWSConfusableData(SpoofImpl *spImpl, const char * confusablesWS, scriptSets->addElement(bsset, status); utrie2_set32(table, cp, setIndex, &status); } - bsset->sset->Union(targScript); - bsset->sset->Union(srcScript); + bsset->sset->set(targScript, status); + bsset->sset->set(srcScript, status); if (U_FAILURE(status)) { goto cleanup; @@ -401,17 +400,19 @@ cleanup: uprv_free(input); int32_t i; - for (i=0; isize(); i++) { - BuilderScriptSet *bsset = static_cast(scriptSets->elementAt(i)); - delete bsset; + if (scriptSets != NULL) { + for (i=0; isize(); i++) { + BuilderScriptSet *bsset = static_cast(scriptSets->elementAt(i)); + delete bsset; + } + delete scriptSets; } - delete scriptSets; utrie2_close(anyCaseTrie); utrie2_close(lowerCaseTrie); return; } - +U_NAMESPACE_END