blob: 35b94ac69117223f704bfff9743a4e6b34f2eea1 [file] [log] [blame]
diff --git a/source/common/ucmndata.h b/source/common/ucmndata.h
index 36163c5..413a2f8 100644
--- a/source/common/ucmndata.h
+++ b/source/common/ucmndata.h
@@ -44,6 +44,20 @@ typedef struct {
} DataHeader;
typedef struct {
+ DataHeader hdr;
+ char padding[8];
+ uint32_t count, reserved;
+ /*
+ const struct {
+ const char *const name;
+ const void *const data;
+ } toc[1];
+ */
+ int fakeNameAndData[4]; /* TODO: Change this header type from */
+ /* pointerTOC to OffsetTOC. */
+} ICU_Data_Header;
+
+typedef struct {
uint32_t nameOffset;
uint32_t dataOffset;
} UDataOffsetTOCEntry;
diff --git a/source/common/udata.cpp b/source/common/udata.cpp
index d32023b..80bea06 100644
--- a/source/common/udata.cpp
+++ b/source/common/udata.cpp
@@ -624,7 +624,7 @@ U_NAMESPACE_END
* our common data. *
* *
*----------------------------------------------------------------------*/
-extern "C" const DataHeader U_DATA_API U_ICUDATA_ENTRY_POINT;
+extern "C" const ICU_Data_Header U_DATA_API U_ICUDATA_ENTRY_POINT;
/*
* This would be a good place for weak-linkage declarations of
@@ -674,7 +674,7 @@ openCommonData(const char *path, /* Path from OpenChoice? */
}
int32_t i;
for(i = 0; i < commonDataIndex; ++i) {
- if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) {
+ if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT.hdr) {
/* The linked-in data is already in the list. */
return NULL;
}
@@ -694,7 +694,7 @@ openCommonData(const char *path, /* Path from OpenChoice? */
setCommonICUDataPointer(uprv_getICUData_conversion(), FALSE, pErrorCode);
}
*/
- setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, FALSE, pErrorCode);
+ setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT.hdr, FALSE, pErrorCode);
{
Mutex lock;
return gCommonICUDataArray[commonDataIndex];
diff --git a/source/stubdata/stubdata.c b/source/stubdata/stubdata.c
index 69a5876..1426497 100644
--- a/source/stubdata/stubdata.c
+++ b/source/stubdata/stubdata.c
@@ -20,45 +20,34 @@
#include "unicode/utypes.h"
#include "unicode/udata.h"
#include "unicode/uversion.h"
+#include "ucmndata.h"
-typedef struct {
- uint16_t headerSize;
- uint8_t magic1, magic2;
- UDataInfo info;
- char padding[8];
- uint32_t count, reserved;
- /*
- const struct {
- const char *const name;
- const void *const data;
- } toc[1];
- */
- int fakeNameAndData[4]; /* TODO: Change this header type from */
- /* pointerTOC to OffsetTOC. */
-} ICU_Data_Header;
-
U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = {
- 32, /* headerSize */
- 0xda, /* magic1, (see struct MappedData in udata.c) */
- 0x27, /* magic2 */
- { /*UDataInfo */
- sizeof(UDataInfo), /* size */
- 0, /* reserved */
+ { /* DataHeader */
+ { /* MappedData */
+ 32, /* headerSize */
+ 0xda, /* magic1, (see struct MappedData in udata.c) */
+ 0x27, /* magic2 */
+ },
+ { /*UDataInfo */
+ sizeof(UDataInfo), /* size */
+ 0, /* reserved */
#if U_IS_BIG_ENDIAN
- 1,
+ 1,
#else
- 0,
+ 0,
#endif
- U_CHARSET_FAMILY,
- sizeof(UChar),
- 0, /* reserved */
- { /* data format identifier */
- 0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
- {1, 0, 0, 0}, /* format version major, minor, milli, micro */
- {0, 0, 0, 0} /* dataVersion */
+ U_CHARSET_FAMILY,
+ sizeof(UChar),
+ 0, /* reserved */
+ { /* data format identifier */
+ 0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
+ {1, 0, 0, 0}, /* format version major, minor, milli, micro */
+ {0, 0, 0, 0} /* dataVersion */
+ },
},
{0,0,0,0,0,0,0,0}, /* Padding[8] */
0, /* count */