Utilities: Add support for testing null deferencing a RefPtr
This adds the new flag -R for the crash utility which tests what happens when we dereference a null RefPtr. This is useful for testing the output of the assertion message.
This commit is contained in:
parent
89a38b72b7
commit
64754ba985
Notes:
sideshowbarker
2024-07-18 12:43:54 +09:00
Author: https://github.com/gunnarbeutner Commit: https://github.com/SerenityOS/serenity/commit/64754ba985d Pull-request: https://github.com/SerenityOS/serenity/pull/7844 Reviewed-by: https://github.com/IdanHo Reviewed-by: https://github.com/awesomekling
1 changed files with 11 additions and 0 deletions
|
@ -10,6 +10,7 @@
|
|||
#include <AK/String.h>
|
||||
#include <Kernel/IO.h>
|
||||
#include <LibCore/ArgsParser.h>
|
||||
#include <LibCore/Object.h>
|
||||
#include <LibTest/CrashTest.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -43,6 +44,7 @@ int main(int argc, char** argv)
|
|||
bool do_read_cpu_counter = false;
|
||||
bool do_pledge_violation = false;
|
||||
bool do_failing_assertion = false;
|
||||
bool do_deref_null_refptr = false;
|
||||
|
||||
auto args_parser = Core::ArgsParser();
|
||||
args_parser.set_general_help(
|
||||
|
@ -67,6 +69,7 @@ int main(int argc, char** argv)
|
|||
args_parser.add_option(do_read_cpu_counter, "Read the x86 TSC (Time Stamp Counter) directly", nullptr, 'c');
|
||||
args_parser.add_option(do_pledge_violation, "Violate pledge()'d promises", nullptr, 'p');
|
||||
args_parser.add_option(do_failing_assertion, "Perform a failing assertion", nullptr, 'n');
|
||||
args_parser.add_option(do_deref_null_refptr, "Dereference a null RefPtr", nullptr, 'R');
|
||||
|
||||
if (argc != 2) {
|
||||
args_parser.print_usage(stderr, argv[0]);
|
||||
|
@ -279,5 +282,13 @@ int main(int argc, char** argv)
|
|||
}).run(run_type);
|
||||
}
|
||||
|
||||
if (do_deref_null_refptr || do_all_crash_types) {
|
||||
Crash("Dereference a null RefPtr", [] {
|
||||
RefPtr<Core::Object> p;
|
||||
*p;
|
||||
return Crash::Failure::DidNotCrash;
|
||||
}).run(run_type);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue