]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
sched.c: Make not return a sched id of 0. 47/1747/2
authorRichard Mudgett <rmudgett@digium.com>
Mon, 30 Nov 2015 22:42:47 +0000 (16:42 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 1 Dec 2015 19:54:04 +0000 (13:54 -0600)
According to the API doxygen a sched ID of 0 is valid.  Unfortunately, 0
was never returned historically and several users incorrectly coded usage
of the returned sched ID assuming that 0 was invalid.

ASTERISK-25476

Change-Id: Ib19c7ebb44ec9fd393ef6646dea806d4f34e3a20

main/sched.c

index a7e67032081d80ff5bf0b322ec4cd23456cefa72..7b7021d617016542e4534c3e2eefcc3af837aacb 100644 (file)
@@ -315,9 +315,16 @@ static int add_ids(struct ast_sched_context *con)
                if (!new_id) {
                        break;
                }
-               new_id->id = i;
+
+               /*
+                * According to the API doxygen a sched ID of 0 is valid.
+                * Unfortunately, 0 was never returned historically and
+                * several users incorrectly coded usage of the returned
+                * sched ID assuming that 0 was invalid.
+                */
+               new_id->id = ++con->id_queue_size;
+
                AST_LIST_INSERT_TAIL(&con->id_queue, new_id, list);
-               ++con->id_queue_size;
        }
 
        return con->id_queue_size - original_size;