diff options
-rw-r--r-- | src/rtos/rtos.c | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/src/rtos/rtos.c b/src/rtos/rtos.c index e016083..aa0976b 100644 --- a/src/rtos/rtos.c +++ b/src/rtos/rtos.c @@ -456,28 +456,25 @@ int rtos_generic_stack_read(struct target *target, int rtos_try_next(struct target *target) { - int x; + struct rtos *os = target->rtos; + struct rtos_type **type = rtos_types; - if (target->rtos == NULL) - return -1; - - for (x = 0; rtos_types[x]; x++) { - if (target->rtos->type == rtos_types[x]) { - /* found */ - if (rtos_types[x+1] != NULL) { - target->rtos->type = rtos_types[x+1]; - if (target->rtos->symbols != NULL) - free(target->rtos->symbols); - return 1; - } else { - /* No more rtos types */ - return 0; - } + if (!os) + return 0; - } + while (*type && os->type != *type) + type++; + + if (!*type || !*(++type)) + return 0; + + os->type = *type; + if (os->symbols) { + free(os->symbols); + os->symbols = NULL; } - return 0; + return 1; } static void hex_to_str(char *dst, char *hex_src) |