Merge branch 'master' of git+ssh://metalzone.distorted.org.uk/~mdw/public-git/catacomb/
[u/mdw/catacomb] / gfx-kmul.c
index dc2e524..940243d 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: gfx-kmul.c,v 1.1 2000/10/08 15:49:37 mdw Exp $
+ * $Id$
  *
  * Karatsuba's multiplication algorithm on binary polynomials
  *
  * MA 02111-1307, USA.
  */
 
-/*----- Revision history --------------------------------------------------* 
- *
- * $Log: gfx-kmul.c,v $
- * Revision 1.1  2000/10/08 15:49:37  mdw
- * First glimmerings of binary polynomial arithmetic.
- *
- */
-
 /*----- Header files ------------------------------------------------------*/
 
 #include <assert.h>
@@ -130,17 +122,14 @@ void gfx_kmul(mpw *dv, mpw *dvl,
       avm = avl;
   }
 
-  assert(((void)"Destination too small for Karatsuba gf-multiply",
-         dvl - dv >= 4 * m));
-  assert(((void)"Not enough workspace for Karatsuba gf-multiply",
-         svl - sv >= 4 * m));
-
   /* --- Sort out the middle term --- */
 
   {
     mpw *bsv = sv + m, *ssv = bsv + m;
     mpw *rdv = dv + m, *rdvl = rdv + 2 * m;
 
+    assert(rdvl <= dvl);
+    assert(ssv <= svl);
     UXOR2(sv, bsv, av, avm, avm, avl);
     UXOR2(bsv, ssv, bv, bvm, bvm, bvl);
     if (m > GFK_THRESH)
@@ -240,7 +229,7 @@ static int mul(dstr *v)
     ok = 0;
   }
 
-  free(a); free(b); free(c); free(d); free(s);
+  xfree(a); xfree(b); xfree(c); xfree(d); xfree(s);
   return (ok);
 }