Commit b94f23a4 authored by Ryan C. Gordon's avatar Ryan C. Gordon

Removed assertion list terminator (just do it like a normal linked list).

parent 782b8b7d
...@@ -205,7 +205,7 @@ extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( ...@@ -205,7 +205,7 @@ extern DECLSPEC void SDLCALL SDL_SetAssertionHandler(
* *
* <code> * <code>
* const SDL_assert_data *item = SDL_GetAssertionReport(); * const SDL_assert_data *item = SDL_GetAssertionReport();
* while (item->condition) { * while (item) {
* printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\n", * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\n",
* item->condition, item->function, item->filename, * item->condition, item->function, item->filename,
* item->linenum, item->trigger_count, * item->linenum, item->trigger_count,
...@@ -214,8 +214,7 @@ extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( ...@@ -214,8 +214,7 @@ extern DECLSPEC void SDLCALL SDL_SetAssertionHandler(
* } * }
* </code> * </code>
* *
* \return List of all assertions. This never returns NULL, * \return List of all assertions.
* even if there are no items.
* \sa SDL_ResetAssertionReport * \sa SDL_ResetAssertionReport
*/ */
extern DECLSPEC const SDL_assert_data * SDLCALL SDL_GetAssertionReport(void); extern DECLSPEC const SDL_assert_data * SDLCALL SDL_GetAssertionReport(void);
......
...@@ -44,8 +44,7 @@ SDL_PromptAssertion(const SDL_assert_data *data, void *userdata); ...@@ -44,8 +44,7 @@ SDL_PromptAssertion(const SDL_assert_data *data, void *userdata);
* We keep all triggered assertions in a singly-linked list so we can * We keep all triggered assertions in a singly-linked list so we can
* generate a report later. * generate a report later.
*/ */
static SDL_assert_data assertion_list_terminator = { 0, 0, 0, 0, 0, 0, 0 }; static SDL_assert_data *triggered_assertions = NULL;
static SDL_assert_data *triggered_assertions = &assertion_list_terminator;
static SDL_mutex *assertion_mutex = NULL; static SDL_mutex *assertion_mutex = NULL;
static SDL_AssertionHandler assertion_handler = SDL_PromptAssertion; static SDL_AssertionHandler assertion_handler = SDL_PromptAssertion;
...@@ -217,7 +216,8 @@ static void SDL_AddAssertionToReport(SDL_assert_data *data) ...@@ -217,7 +216,8 @@ static void SDL_AddAssertionToReport(SDL_assert_data *data)
{ {
/* (data) is always a static struct defined with the assert macros, so /* (data) is always a static struct defined with the assert macros, so
we don't have to worry about copying or allocating them. */ we don't have to worry about copying or allocating them. */
if (data->next == NULL) { /* not yet added? */ data->trigger_count++;
if (data->trigger_count == 1) { /* not yet added? */
data->next = triggered_assertions; data->next = triggered_assertions;
triggered_assertions = data; triggered_assertions = data;
} }
...@@ -226,19 +226,14 @@ static void SDL_AddAssertionToReport(SDL_assert_data *data) ...@@ -226,19 +226,14 @@ static void SDL_AddAssertionToReport(SDL_assert_data *data)
static void SDL_GenerateAssertionReport(void) static void SDL_GenerateAssertionReport(void)
{ {
const SDL_assert_data *item; const SDL_assert_data *item = triggered_assertions;
/* only do this if the app hasn't assigned an assertion handler. */ /* only do this if the app hasn't assigned an assertion handler. */
if (assertion_handler != SDL_PromptAssertion) if ((item != NULL) && (assertion_handler != SDL_PromptAssertion)) {
return;
item = SDL_GetAssertionReport();
if (item->condition)
{
debug_print("\n\nSDL assertion report.\n"); debug_print("\n\nSDL assertion report.\n");
debug_print("All SDL assertions between last init/quit:\n\n"); debug_print("All SDL assertions between last init/quit:\n\n");
while (item->condition) { while (item != NULL) {
debug_print( debug_print(
"'%s'\n" "'%s'\n"
" * %s (%s:%d)\n" " * %s (%s:%d)\n"
...@@ -398,8 +393,6 @@ SDL_ReportAssertion(SDL_assert_data *data, const char *func, const char *file, ...@@ -398,8 +393,6 @@ SDL_ReportAssertion(SDL_assert_data *data, const char *func, const char *file,
SDL_AddAssertionToReport(data); SDL_AddAssertionToReport(data);
data->trigger_count++;
assertion_running++; assertion_running++;
if (assertion_running > 1) { /* assert during assert! Abort. */ if (assertion_running > 1) { /* assert during assert! Abort. */
if (assertion_running == 2) { if (assertion_running == 2) {
...@@ -472,16 +465,16 @@ const SDL_assert_data *SDL_GetAssertionReport(void) ...@@ -472,16 +465,16 @@ const SDL_assert_data *SDL_GetAssertionReport(void)
void SDL_ResetAssertionReport(void) void SDL_ResetAssertionReport(void)
{ {
SDL_assert_data *item = triggered_assertions;
SDL_assert_data *next = NULL; SDL_assert_data *next = NULL;
for (item = triggered_assertions; item->condition; item = next) { SDL_assert_data *item;
for (item = triggered_assertions; item != NULL; item = next) {
next = (SDL_assert_data *) item->next; next = (SDL_assert_data *) item->next;
item->always_ignore = SDL_FALSE; item->always_ignore = SDL_FALSE;
item->trigger_count = 0; item->trigger_count = 0;
item->next = NULL; item->next = NULL;
} }
triggered_assertions = &assertion_list_terminator; triggered_assertions = NULL;
} }
/* vi: set ts=4 sw=4 expandtab: */ /* vi: set ts=4 sw=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment