File tla-1.3.5-memfuncs.patch of Package tla

diff -rU3 tla-1.3.5.orig/src/hackerlab/mem/mem.c tla-1.3.5/src/hackerlab/mem/mem.c
--- tla-1.3.5.orig/src/hackerlab/mem/mem.c	2006-07-20 08:34:36.000000000 +0200
+++ tla-1.3.5/src/hackerlab/mem/mem.c	2010-12-17 15:24:23.000000000 +0100
@@ -21,96 +21,6 @@
  */
 
 
-/*(c mem_set)
- * void mem_set (t_uchar * mem, unsigned int c, size_t size);
- * 
- * Store `size' bytes of value `c' beginning at `mem'.
- */
-void
-mem_set (t_uchar * mem, unsigned int c, size_t size)
-{
-  while (size--)
-    *(mem++) = c;
-}
-
-
-/*(c mem_set0)
- * void mem_set0 (t_uchar * mem, size_t n);
- * 
- * Store `n' 0 bytes beginning at `mem'.
- */
-void
-mem_set0 (t_uchar * mem, size_t n)
-{
-  while (n--)
-    *(mem++) = 0;
-}
-
-
-/*(c mem_move)
- * void mem_move (t_uchar * to, const t_uchar * from, size_t amt);
- * 
- * Copy `amt' bytes from `from' to `to'.  The source and destination
- * regions may overlap.
- */
-void
-mem_move (t_uchar * to, const t_uchar * from, size_t amt)
-{
-  if (from == to)
-    return;
-  if (from > to)
-    {
-      while (amt--)
-	*to++ = *from++;
-    }
-  else
-    {
-      to += amt - 1;
-      from += amt - 1;
-      while (amt--)
-	*to-- = *from--;
-    }
-}
-
-
-/*(c mem_cpy)
- * void mem_cpy (void * to, const void * from, size_t amt);
- * 
- * Copy `amt' bytes from `from' to `to'.  The source and destination
- * regions may not overlap.
- */
-void
-mem_cpy (void * to, const void * from, size_t amt)
-{ 
-  if (from == to)
-    return;
-  while (amt--)
-    *(char *)to++ = *(char const *)from++;
-}
-
-
-/*(c mem_cmp)
- * int mem_cmp (const t_uchar * m1, const t_uchar * m2, size_t amt);
- * 
- * Compare `amt' bytes starting at `m1' and `m2'.  If a difference is
- * found, immediately return -1 if the differing byte in `m1' is less
- * than the byte in `m2', 1 otherwise.  If no difference is found,
- * return 0.
- */
-int
-mem_cmp (const t_uchar * m1, const t_uchar * m2, size_t amt)
-{
-  while (amt--)
-    if (*m1++ != *m2++)
-      {
-	--m1;
-	--m2;
-	return (*m1 < *m2) ? -1 : 1;
-      }
-  return 0;
-}
-
-
 /*(c mem_occurrences)
  * size_t mem_occurrences (const t_uchar * mem,
  *                         unsigned int c,
diff -rU3 tla-1.3.5.orig/src/hackerlab/mem/mem.h tla-1.3.5/src/hackerlab/mem/mem.h
--- tla-1.3.5.orig/src/hackerlab/mem/mem.h	2006-07-20 08:34:36.000000000 +0200
+++ tla-1.3.5/src/hackerlab/mem/mem.h	2010-12-17 15:23:55.000000000 +0100
@@ -12,15 +12,16 @@
 #define INCLUDE__MEM__MEM_H
 
 
+#include <string.h>
 #include "hackerlab/machine/types.h"
 
 
 /* automatically generated __STDC__ prototypes */
-extern void mem_set (t_uchar * mem, unsigned int c, size_t size);
-extern void mem_set0 (t_uchar * mem, size_t n);
-extern void mem_move (t_uchar * to, const t_uchar * from, size_t amt);
-extern void mem_cpy (void * to, void const * from, size_t amt);
-extern int mem_cmp (const t_uchar * m1, const t_uchar * m2, size_t amt);
+#define mem_set(mem,c,size)	memset(mem,c,size)
+#define mem_set0(mem,n)		memset(mem,0,n)
+#define mem_move(to,from,amt)	memmove(to,from,amt)
+#define mem_cpy(to,from,amt)	memcpy(to,from,amt)
+#define mem_cmp(m1,m2,amt)	memcmp(m1,m2,amt)
 extern size_t mem_occurrences (const t_uchar * mem,
                                unsigned int c,
                                size_t size);
diff -rU3 tla-1.3.5.orig/src/hackerlab/tests/mem-tests/unit-mem.c tla-1.3.5/src/hackerlab/tests/mem-tests/unit-mem.c
--- tla-1.3.5.orig/src/hackerlab/tests/mem-tests/unit-mem.c	2006-07-20 08:34:36.000000000 +0200
+++ tla-1.3.5/src/hackerlab/tests/mem-tests/unit-mem.c	2010-12-17 15:51:14.000000000 +0100
@@ -170,8 +170,10 @@
 		  break;
 		}
 	    
-	    invariant (cmp == mem_cmp (buffer + left, buffer + right, size));
-	    invariant ((-cmp) == mem_cmp (buffer + right, buffer + left, size));
+	    x = mem_cmp (buffer + left, buffer + right, size);
+	    invariant (cmp == x || cmp < 0 && x < 0 || cmp > 0 && x > 0);
+	    x = mem_cmp (buffer + right, buffer + left, size);
+	    invariant (cmp == x || cmp > 0 && x < 0 || cmp < 0 && x > 0);
 	  }
   }
 
openSUSE Build Service is sponsored by