Jeff,
 I am a little lost in that code as you might imagine :-)

BTW, the HAVE_MMAP is defined.

I set a breakpoint at "uprv_mapFile_2_6", and here is some of the gdb debug...



[New Thread 16384 (LWP 942)]
[Switching to Thread 16384 (LWP 942)]

Breakpoint 1, uprv_mapFile_2_6 (pData=0xbfffd9e0,
path=0xbfffe2f4 "./icudt26l_cnvalias.icu") at umapfile.c:165
165 UDataMemory_init(pData); /* Clear the output struct. */
(gdb) c
Continuing.


Breakpoint 1, uprv_mapFile_2_6 (pData=0xbfffd1c0,
path=0xbfffdad4 "./icudt26l_ucadata.icu") at umapfile.c:165
165 UDataMemory_init(pData); /* Clear the output struct. */
(gdb) s
159 uprv_mapFile(UDataMemory *pData, const char *path) {
(gdb) s
165 UDataMemory_init(pData); /* Clear the output struct. */
(gdb) s
UDataMemory_init_2_6 (This=0xbfffd1b8) at udatamem.c:27
27 uprv_memset(This, 0, sizeof(UDataMemory));
(gdb) s
26 void UDataMemory_init(UDataMemory *This) {
(gdb) s
27 uprv_memset(This, 0, sizeof(UDataMemory));
(gdb) s
26 void UDataMemory_init(UDataMemory *This) {
(gdb) s
27 uprv_memset(This, 0, sizeof(UDataMemory));
(gdb) s
28 }
(gdb) s
uprv_mapFile_2_6 (pData=0xbfffd1c0, path=0xbfffdad4 "./icudt26l_ucadata.icu")
at stat.h:358
358 {
(gdb) s
359 return __xstat (_STAT_VER, __path, __statbuf);
(gdb) s
358 {
(gdb) s
174 fd=open(path, O_RDONLY);
(gdb) s
175 if(fd==-1) {
(gdb) s
181 data=mmap(0, length, PROT_READ, MAP_SHARED, fd, 0);
(gdb) s
185 close(fd); /* no longer needed */
(gdb) s
181 data=mmap(0, length, PROT_READ, MAP_SHARED, fd, 0);
(gdb) s
185 close(fd); /* no longer needed */


^^^^^^^^^^^^^^^^^^^^ I DONT LIKE THIS but maybe is just me :-)
shouldn't we have an open fd again, or that close should be there? :)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

(gdb) s
186             if(data==MAP_FAILED) {
(gdb)
190             pData->map = (char *)data + length;
(gdb)
191             pData->pHeader=(const DataHeader *)data;
(gdb)

Reply via email to