diff options
author | Ben Murdoch <benm@google.com> | 2011-05-24 11:24:40 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-06-02 09:53:15 +0100 |
commit | 81bc750723a18f21cd17d1b173cd2a4dda9cea6e (patch) | |
tree | 7a9e5ed86ff429fd347a25153107221543909b19 /Source/WebCore/platform/text/gtk/TextBreakIteratorGtk.cpp | |
parent | 94088a6d336c1dd80a1e734af51e96abcbb689a7 (diff) | |
download | external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.zip external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.tar.gz external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.tar.bz2 |
Merge WebKit at r80534: Intial merge by Git
Change-Id: Ia7a83357124c9e1cdb1debf55d9661ec0bd09a61
Diffstat (limited to 'Source/WebCore/platform/text/gtk/TextBreakIteratorGtk.cpp')
-rw-r--r-- | Source/WebCore/platform/text/gtk/TextBreakIteratorGtk.cpp | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/Source/WebCore/platform/text/gtk/TextBreakIteratorGtk.cpp b/Source/WebCore/platform/text/gtk/TextBreakIteratorGtk.cpp index 990e331..8f289f3 100644 --- a/Source/WebCore/platform/text/gtk/TextBreakIteratorGtk.cpp +++ b/Source/WebCore/platform/text/gtk/TextBreakIteratorGtk.cpp @@ -239,11 +239,34 @@ TextBreakIterator* wordBreakIterator(const UChar* string, int length) return setUpIterator(createdWordBreakIterator, staticWordBreakIterator, UBRK_WORD, string, length); } -TextBreakIterator* lineBreakIterator(const UChar* string, int length) +static bool createdLineBreakIterator = false; +static TextBreakIterator* staticLineBreakIterator; + +TextBreakIterator* acquireLineBreakIterator(const UChar* string, int length) { - static bool createdLineBreakIterator = false; - static TextBreakIterator* staticLineBreakIterator; - return setUpIterator(createdLineBreakIterator, staticLineBreakIterator, UBRK_LINE, string, length); + TextBreakIterator* lineBreakIterator = 0; + if (!createdLineBreakIterator || staticLineBreakIterator) { + setUpIterator(createdLineBreakIterator, staticLineBreakIterator, UBRK_LINE, string, length); + swap(staticLineBreakIterator, lineBreakIterator); + } + + if (!lineBreakIterator) { + bool createdNewLineBreakIterator = false; + setUpIterator(createdNewLineBreakIterator, lineBreakIterator, UBRK_LINE, string, length); + } + + return lineBreakIterator; +} + +void releaseLineBreakIterator(TextBreakIterator* iterator) +{ + ASSERT(createdLineBreakIterator); + ASSERT(iterator); + + if (!staticLineBreakIterator) + staticLineBreakIterator = iterator; + else + delete iterator; } TextBreakIterator* sentenceBreakIterator(const UChar* string, int length) |