ソースを参照

LibTest: Change `Crash` forked process communication

Now it returns `Failure` value via `exit`, and the caller is
responsible of reporting errors to the user.
Michel Hermier 3 年 前
コミット
2f8fac3528
1 ファイル変更5 行追加3 行削除
  1. 5 3
      Userland/Libraries/LibTest/CrashTest.cpp

+ 5 - 3
Userland/Libraries/LibTest/CrashTest.cpp

@@ -40,17 +40,19 @@ bool Crash::run(RunType run_type)
             if (prctl(PR_SET_DUMPABLE, 0, 0) < 0)
                 perror("prctl(PR_SET_DUMPABLE)");
 #endif
-            return do_report(m_crash_function());
-            exit(0);
+            exit((int)m_crash_function());
         }
 
         int status;
         waitpid(pid, &status, 0);
+        if (WIFEXITED(status)) {
+            return do_report(Failure(WEXITSTATUS(status)));
+        }
         if (WIFSIGNALED(status)) {
             outln("\x1B[32mPASS\x1B[0m: Terminated with signal {}", WTERMSIG(status));
             return true;
         }
-        return false;
+        VERIFY_NOT_REACHED();
     }
 }