From 0e85fb9ad0f62c4b7b21695f16df30f81d235d52 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Mon, 28 Aug 2000 19:53:23 +0200
Subject: [PATCH] The memset test now succeeds in triggering the memset() bug.
 The bug seems to be in gcc 2.96.

Rev: src/configure.in:1.409
---
 src/configure.in | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/src/configure.in b/src/configure.in
index 44c54f8e2f..f942459737 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -1,4 +1,4 @@
-AC_REVISION("$Id: configure.in,v 1.408 2000/08/28 13:56:44 grubba Exp $")
+AC_REVISION("$Id: configure.in,v 1.409 2000/08/28 17:53:23 grubba Exp $")
 AC_INIT(interpret.c)
 AC_CONFIG_HEADER(machine.h)
 
@@ -2519,8 +2519,25 @@ MY_CHECK_FUNCTION(memset,
 [
 #include <string.h>
 char foo[23];
+
+struct pike_string {
+  int refs;
+  int size_shift;
+  ptrdiff_t len;
+  size_t hval;
+  struct pike_string *next;
+  char str[1];
+};
+
+struct pike_string *begin_shared_string(int len)
+{
+  return malloc(sizeof(pike_string) + len);
+}
+
 ], [
   int i;
+  struct pike_string *str;
+
   memset(foo, 0, 11);
   memset(foo, 'a', 10);
   memset(foo, 'b', 5);
@@ -2557,6 +2574,20 @@ char foo[23];
   for (i=6; i--;) {
     if (foo[i+7] != 1) exit(1);
   }
+
+  len = 6;
+  str = begin_shared_string(len);
+
+  if (!str) exit(1);
+
+  for (i=len; i--;) {
+    str->str[i] = ~0;
+  }
+  memset(str, 0, len);
+  for (i = len; i--;) {
+    if (str->str[i]) exit(1);
+  }
+  free(str);
   exit(0);
 ])
 
-- 
GitLab