progs/vp: more psiz tests
[mesa.git] / progs / util / readtex.c
index 280d6c811d91e69cb4bf2afcfa38b349afcc2021..8e923b6eb47126952e9dd5cf2caa2b858bcc5d50 100644 (file)
@@ -97,14 +97,20 @@ static rawImageRec *RawImageOpen(const char *fileName)
       swapFlag = GL_FALSE;
    }
 
-   raw = (rawImageRec *)malloc(sizeof(rawImageRec));
+   raw = (rawImageRec *)calloc(1, sizeof(rawImageRec));
    if (raw == NULL) {
       fprintf(stderr, "Out of memory!\n");
       return NULL;
    }
-   if ((raw->file = fopen(fileName, "rb")) == NULL) {
-      perror(fileName);
-      return NULL;
+   raw->file = fopen(fileName, "rb");
+   if (raw->file == NULL) {
+      const char *baseName = strrchr(fileName, '/');
+      if(baseName)
+         raw->file = fopen(baseName + 1, "rb");
+      if(raw->file == NULL) {
+         perror(fileName);
+         return NULL;
+      }
    }
 
    fread(raw, 1, 12, raw->file);
@@ -148,12 +154,15 @@ static rawImageRec *RawImageOpen(const char *fileName)
 
 static void RawImageClose(rawImageRec *raw)
 {
-
    fclose(raw->file);
    free(raw->tmp);
    free(raw->tmpR);
    free(raw->tmpG);
    free(raw->tmpB);
+   if (raw->rowStart)
+      free(raw->rowStart);
+   if (raw->rowSize)
+      free(raw->rowSize);
    if (raw->sizeZ>3) {
       free(raw->tmpA);
    }