]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/fs/zfs.c: Remove variable length arrays.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 20 Oct 2013 16:42:40 +0000 (18:42 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 20 Oct 2013 16:42:40 +0000 (18:42 +0200)
Reduces zfs.mod by 160 bytes (208 compressed).

ChangeLog
grub-core/fs/zfs/zfs.c

index f1e3ab9a772bdfe4fabc079b4b975fdf31fdb0fb..fd8cd931f9ba42cf1728a07c1e78e9d7ca3efb0b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-10-20  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/fs/zfs.c: Remove variable length arrays.
+       Reduces zfs.mod by 160 bytes (208 compressed).
+
 2013-10-20  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/fs/zfs/zfs.c (check_pool_label): Fix memory leak.
index 23603affea81ab966e345c929d315c14e49e1d61..37df3d5b7e116b9b24da8a74b7393689f14414b6 100644 (file)
@@ -1302,7 +1302,9 @@ gf_mul (grub_uint8_t a, grub_uint8_t b)
   return powx[powx_inv[a] + powx_inv[b]];
 }
 
-static inline grub_err_t
+#define MAX_NBUFS 4
+
+static grub_err_t
 recovery (grub_uint8_t *bufs[4], grub_size_t s, const int nbufs,
          const unsigned *powers,
          const int *idx)
@@ -1356,9 +1358,9 @@ recovery (grub_uint8_t *bufs[4], grub_size_t s, const int nbufs,
        return GRUB_ERR_NONE;
       }
       /* Otherwise use Gauss.  */
-    default:
+    case 3:
       {
-       grub_uint8_t matrix1[nbufs][nbufs], matrix2[nbufs][nbufs];
+       grub_uint8_t matrix1[MAX_NBUFS][MAX_NBUFS], matrix2[MAX_NBUFS][MAX_NBUFS];
        int i, j, k;
 
        for (i = 0; i < nbufs; i++)
@@ -1426,7 +1428,7 @@ recovery (grub_uint8_t *bufs[4], grub_size_t s, const int nbufs,
 
        for (i = 0; i < (int) s; i++)
          {
-           grub_uint8_t b[nbufs];
+           grub_uint8_t b[MAX_NBUFS];
            for (j = 0; j < nbufs; j++)
              b[j] = bufs[j][i];
            for (j = 0; j < nbufs; j++)
@@ -1438,6 +1440,8 @@ recovery (grub_uint8_t *bufs[4], grub_size_t s, const int nbufs,
          }
        return GRUB_ERR_NONE;
       }
+    default:
+      return grub_error (GRUB_ERR_BUG, "too big matrix");
     }      
 }