documentor: Fixed first Save on doc file creation
[sdk] / ecere / src / sys / EARArchive.ec
index 5d85c63..e3912ac 100644 (file)
@@ -45,7 +45,13 @@ static File EAROpenArchive(char * archive, EARHeader header)
    if(archive[0] == ':')
    {
       char moduleName[MAX_LOCATION];
-      if(LocateModule(archive + 1, moduleName))
+      char * name = archive + 1;
+#if defined(__ANDROID__)
+      if(!name[0])
+         name = ((SubModule)__thisModule.application.modules.first).next.module.name;
+#endif
+
+      if(LocateModule(name, moduleName))
          f = FileOpen(moduleName, read);
    }
    else
@@ -528,7 +534,11 @@ class EARArchive : Archive
                   if(compressed)
                   {
                      if(f.Read(compressed, 1, entry.cSize) == entry.cSize)
-                        uncompress(uncompressed, (uint *)&entry.size, compressed, entry.cSize);
+                     {
+                        unsigned long destLen = entry.size;
+                        uncompress(uncompressed, &destLen, compressed, entry.cSize);
+                        entry.size = (FileSize)destLen;  // TODO: Support 64 bit file sizes
+                     }
                      delete compressed;
                   }
 
@@ -575,7 +585,11 @@ class EARArchive : Archive
             if(compressed)
             {
                if(f.Read(compressed, 1, entry.cSize) == entry.cSize)
-                  uncompress(uncompressed, (uint *)&entry.size, compressed, entry.cSize);
+               {
+                  unsigned long destLen = entry.size;
+                  uncompress(uncompressed, &destLen, compressed, entry.cSize);
+                  entry.size = (FileSize)destLen;
+               }
                delete compressed;
             }
 
@@ -706,7 +720,11 @@ class EARArchiveDir : ArchiveDir
                   if(compressed)
                   {
                      if(archive.f.Read(compressed, 1, entry.cSize) == entry.cSize)
-                        uncompress(uncompressed, (uint *)&entry.size, compressed, entry.cSize);
+                     {
+                        unsigned long destLen = entry.size;
+                        uncompress(uncompressed, &destLen, compressed, entry.cSize);
+                        entry.size = (FileSize)destLen;
+                     }
                      delete compressed;
                   }
 
@@ -1103,11 +1121,14 @@ class EARArchiveDir : ArchiveDir
             {
                if(input.Read(uncompressed, 1, entry.size) == entry.size)
                {
-                  entry.cSize = entry.size + entry.size / 1000 + 12;
+                  unsigned long destLen = entry.size + entry.size / 1000 + 12;
 
-                  compressed = new byte[entry.cSize];
+                  compressed = new byte[destLen];
                   if(compressed)
-                     compress2(compressed, (uint *)&entry.cSize, uncompressed, entry.size, compression);
+                  {
+                     compress2(compressed, &destLen, uncompressed, entry.size, compression);
+                     entry.cSize = (FileSize)destLen;
+                  }
                }
                delete uncompressed;
             }
@@ -1170,7 +1191,7 @@ class EARArchiveDir : ArchiveDir
 
          last = position;
          if(!first) first = position;
-         if(newPosition) *newPosition = (bool)position;
+         if(newPosition) *newPosition = position;
       }
       else
       {
@@ -1364,7 +1385,11 @@ class EARFileSystem : FileSystem
                         if(compressed)
                         {
                            if(f.Read(compressed, 1, entry.cSize) == entry.cSize)
-                              uncompress(uncompressed, (uint *)&entry.size, compressed, entry.cSize);
+                           {
+                              unsigned long destLen = entry.size;
+                              uncompress(uncompressed, &destLen, compressed, entry.cSize);
+                              entry.size = (FileSize)destLen;
+                           }
                            delete compressed;
                         }