Apply fixes to mlw_encoder

 - Fix weight encoder palette allocation

Change-Id: If79655f65cfb4820bf0f8ba6472b3df940b1e44b
Signed-off-by: Tim Hall <tim.hall@arm.com>
diff --git a/ethosu/mlw_codec/mlw_encode.c b/ethosu/mlw_codec/mlw_encode.c
index ac25fc5..7820106 100644
--- a/ethosu/mlw_codec/mlw_encode.c
+++ b/ethosu/mlw_codec/mlw_encode.c
@@ -65,7 +65,7 @@
     int i,j,got_palette,restart_i,palette_size=0, last_restart_idx, zero_cnt;
     int prev_idx[512];  // For each value, keep track of the index of the previous occurence
     int *restart_pos;
-    int max_palettes = size/64;
+    int max_palettes = (size+63)/64;
 
     // Preliminary allocation of sufficient size
     restart_pos = (int*)malloc( max_palettes*sizeof(int) );
@@ -89,7 +89,10 @@
                     if ( (i - last_restart_idx - zero_cnt) > 512 || (palette_size-exclude_zero)>32 ) {
                         // create a new palette because we extend a long lasting palette to require one more index bit
                         DPRINTF("Note: at pos %d create new palette because previous has to increase one more index bit. last_restart_idx %d n %d zero_cnt %d\n", i, last_restart_idx, i - last_restart_idx, zero_cnt );
-                        assert( restart_i < max_palettes );
+                        if (restart_i == max_palettes) {
+                            max_palettes = max_palettes*2;
+                            restart_pos = (int*)realloc( restart_pos, max_palettes*sizeof(int) );
+                        }
                         DPRINTF("restart %d pos %d\n", restart_i, i);
                         restart_pos[restart_i++] = i;
                         last_restart_idx = i;
@@ -154,7 +157,10 @@
                     last_restart_idx = restart_idx;
                     DPRINTF("Note: at pos %d create palette of size %d\n", last_restart_idx, new_palette_size);
                     if ( restart_pos[restart_i-1] != last_restart_idx) {
-                        assert( restart_i < max_palettes );
+                        if (restart_i == max_palettes) {
+                            max_palettes = max_palettes*2;
+                            restart_pos = (int*)realloc( restart_pos, max_palettes*sizeof(int) );
+                        }
                         restart_pos[restart_i++] = last_restart_idx;
                     }
                     zero_cnt=0;