浏览代码

KWSys: Avoid undefined behavior in Process crash tests

Clang is smart enough to recognize that "*(int*)0=0" invokes undefined
behavior, warns, and produces an "undefined instruction".  The message
in commit "Avoid Clang optimizer bug in testProcess-[45]" (2010-07-02)
is incorrect; this is not a Clang bug.  It really is undefined
behavior.  Use "*(int*)1=0" to produce a crash instead.
Brad King 15 年之前
父节点
当前提交
70154efef8
共有 1 个文件被更改,包括 2 次插入3 次删除
  1. 2 3
      Source/kwsys/testProcess.c

+ 2 - 3
Source/kwsys/testProcess.c

@@ -94,9 +94,8 @@ int test4(int argc, const char* argv[])
   fprintf(stderr, "Output before crash on stderr from crash test.\n");  
   fprintf(stderr, "Output before crash on stderr from crash test.\n");  
   fflush(stdout);
   fflush(stdout);
   fflush(stderr);
   fflush(stderr);
-#if defined(__APPLE__) && defined(__x86_64__) && defined(__OPTIMIZE__) \
- && defined(__clang__)
-  *(int*)1 = 0; /* Clang's optimizer produces bad code for 0-ptr.  */
+#if defined(__clang__)
+  *(int*)1 = 0; /* Clang warns about 0-ptr; undefined behavior.  */
 #else
 #else
   *(int*)0 = 0;
   *(int*)0 = 0;
 #endif
 #endif