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);
}
}