Przeglądaj źródła

Merge pull request #1467 from ghalliday/viewunicode

Fix bug in viewing unicode indexes

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 13 lat temu
rodzic
commit
d1555dbd94

+ 20 - 0
common/fileview2/fvidxsource.cpp

@@ -416,6 +416,26 @@ bool IndexDataSource::addFilter(unsigned column, unsigned matchLen, unsigned siz
             }
             break;
         }
+    case type_unicode:
+        {
+            const char * inbuff = (const char *)data;
+            unsigned lenData = sizeData / sizeof(UChar);
+            unsigned lenField = cur.getStringLen();
+            if (matchLen != FullStringMatch)
+            {
+                unsigned lenLow, lenHigh;
+                rtlCreateUnicodeRangeLow(lenLow, tempLow.refustr(), lenField, matchLen, lenData, (const UChar *)inbuff);
+                rtlCreateUnicodeRangeHigh(lenHigh, tempHigh.refustr(), lenField, matchLen, lenData, (const UChar *)inbuff);
+                low = tempLow.getdata();
+                high = tempHigh.getdata();
+            }
+            else
+            {
+                rtlUnicodeToUnicode(lenField, (UChar *)temp, lenData, (const UChar *)data);
+                low = high = temp;
+            }
+            break;
+        }
     default:
         assertex(sizeData == curSize);
         break;

+ 1 - 0
common/fileview2/fvresultset.cpp

@@ -2586,6 +2586,7 @@ void CColumnFilter::addValue(unsigned sizeText, const char * text)
         }
     case type_unicode:
         {
+            if (lenText > subLen) lenText = subLen;
             UChar * target = (UChar *)next->allocate(lenText*2);
             rtlUtf8ToUnicode(lenText, target, lenText, text);
             break;