]> granicus.if.org Git - icu/commitdiff
ICU-11032 call udata_getMemory() rather than reading internal structures
authorMarkus Scherer <markus.icu@gmail.com>
Thu, 11 Sep 2014 19:52:26 +0000 (19:52 +0000)
committerMarkus Scherer <markus.icu@gmail.com>
Thu, 11 Sep 2014 19:52:26 +0000 (19:52 +0000)
X-SVN-Rev: 36473

icu4c/source/i18n/uspoof_impl.cpp

index ffb986cb6241ba2b4bd1605f2d6fdf50e9a0bbb3..9c662f8048336e70581300ba3f418c4a662ae945 100644 (file)
@@ -15,7 +15,6 @@
 #include "cstring.h"
 #include "identifier_info.h"
 #include "scriptset.h"
-#include "udatamem.h"
 #include "umutex.h"
 #include "udataswp.h"
 #include "uassert.h"
@@ -531,10 +530,9 @@ SpoofData::SpoofData(UDataMemory *udm, UErrorCode &status)
         return;
     }
     fUDM = udm;
-    const DataHeader *dh = udm->pHeader;
-    int32_t headerSize = dh->dataHeader.headerSize;
-    fRawData = reinterpret_cast<SpoofDataHeader *>
-                   ((char *)dh + headerSize);
+    // fRawData is non-const because it may be constructed by the data builder.
+    fRawData = reinterpret_cast<SpoofDataHeader *>(
+            const_cast<void *>(udata_getMemory(udm)));
     validateDataVersion(fRawData, status);
     initPtrs(status);
 }