diff tools/lib64gfx.c @ 2329:0085ce04788b

Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 16 Sep 2019 10:24:49 +0300
parents b57517a01960
children 8f4cfe59b2bb
line wrap: on
line diff
--- a/tools/lib64gfx.c	Mon Sep 16 10:14:57 2019 +0300
+++ b/tools/lib64gfx.c	Mon Sep 16 10:24:49 2019 +0300
@@ -367,14 +367,14 @@
 }
 
 
-void dmGenericRLEAnalyze(const DMGrowBuf *buf, DMCompParams *cfg)
+int dmGenericRLEAnalyze(const DMGrowBuf *buf, DMCompParams *cfg)
 {
 #define DM_STAT_MAX 256
-    size_t *stats;
+    Uint8 *stats = NULL;
 
     // Allocate statistics counts buffer
-    if ((stats = dmMalloc0(DM_STAT_MAX * sizeof(size_t))) == NULL)
-        return;
+    if ((stats = dmMalloc0(DM_STAT_MAX * sizeof(Uint8))) == NULL)
+        return DMERR_MALLOC;
 
     // Get statistics on the data
     for (size_t offs = 0; offs < buf->len; offs++)
@@ -390,26 +390,24 @@
 
                 // Find least used byte value
                 for (size_t n = 0; n < DM_STAT_MAX; n++)
+                if (stats[n] < smallest)
                 {
-                    if (stats[n] < smallest)
+                    switch (cfg->flags & DM_RLE_RUNS_MASK)
                     {
-                        switch (cfg->flags & DM_RLE_RUNS_MASK)
-                        {
-                            case DM_RLE_BYTE_RUNS | DM_RLE_WORD_RUNS:
-                                cfg->rleMarkerW = selected;
-                                cfg->rleMarkerB = selected = n;
-                                break;
+                        case DM_RLE_BYTE_RUNS | DM_RLE_WORD_RUNS:
+                            cfg->rleMarkerW = selected;
+                            cfg->rleMarkerB = selected = n;
+                            break;
 
-                            case DM_RLE_BYTE_RUNS:
-                                cfg->rleMarkerB = selected = n;
-                                break;
+                        case DM_RLE_BYTE_RUNS:
+                            cfg->rleMarkerB = selected = n;
+                            break;
 
-                            case DM_RLE_WORD_RUNS:
-                                cfg->rleMarkerW = selected = n;
-                                break;
-                        }
-                        smallest = stats[n];
+                        case DM_RLE_WORD_RUNS:
+                            cfg->rleMarkerW = selected = n;
+                            break;
                     }
+                    smallest = stats[n];
                 }
             }
             break;
@@ -422,6 +420,7 @@
     }
 
     dmFree(stats);
+    return DMERR_OK;
 }