UIQ3 bugfixes, SVP drc indirect jumps, stuff
[picodrive.git] / Pico / Cart.c
index de340a1..c07bfda 100644 (file)
@@ -137,8 +137,10 @@ zip_failed:
     if (f == NULL)\r
       goto cso_failed;\r
 \r
+#ifndef __EPOC32__\r
     /* we use our own buffering */\r
     setvbuf(f, NULL, _IONBF, 0);\r
+#endif\r
 \r
     cso = malloc(sizeof(*cso));\r
     if (cso == NULL)\r
@@ -192,9 +194,6 @@ cso_failed:
   f = fopen(path, "rb");\r
   if (f == NULL) return NULL;\r
 \r
-  /* we use our own buffering */\r
-  setvbuf(f, NULL, _IONBF, 0);\r
-\r
   file = malloc(sizeof(*file));\r
   if (file == NULL) {\r
     fclose(f);\r
@@ -207,6 +206,12 @@ cso_failed:
   file->type  = PMT_UNCOMPRESSED;\r
   fseek(f, 0, SEEK_SET);\r
 \r
+#ifndef __EPOC32__ // makes things worse on Symbian\r
+  if (file->size > 0x400000)\r
+    /* we use our own buffering */\r
+    setvbuf(f, NULL, _IONBF, 0);\r
+#endif\r
+\r
   return file;\r
 }\r
 \r
@@ -445,7 +450,7 @@ int PicoCartLoad(pm_file *f,unsigned char **prom,unsigned int *psize)
   rom=PicoCartAlloc(size);\r
   if (rom==NULL) {\r
     elprintf(EL_STATUS, "out of memory (wanted %i)", size);\r
-    return 1;\r
+    return 2;\r
   }\r
 \r
   if (PicoCartLoadProgressCB != NULL)\r
@@ -470,7 +475,7 @@ int PicoCartLoad(pm_file *f,unsigned char **prom,unsigned int *psize)
   if (bytes_read <= 0) {\r
     elprintf(EL_STATUS, "read failed");\r
     free(rom);\r
-    return 1;\r
+    return 3;\r
   }\r
 \r
   // maybe we are loading MegaCD BIOS?\r