Change space-zero to now evaluate to false, as is expected by a great many.
authorTilghman Lesher <tilghman@meg.abyt.es>
Sun, 25 May 2008 14:31:29 +0000 (14:31 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Sun, 25 May 2008 14:31:29 +0000 (14:31 +0000)
(Inspired by a post on the -users list)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@118223 65c4cc65-6c06-0410-ace0-fbb531ad65f3

UPGRADE.txt
main/pbx.c

index ff3ca92..e2184ce 100644 (file)
@@ -59,6 +59,12 @@ Core:
 * The silencethreshold used for various applications is now settable via a
   centralized config option in dsp.conf.
 
+* The logical value of spaces immediately preceding a standalone 0 previously
+  evaluated to true.  It now evaluates to false.  This has confused a good
+  many people in the past (typically because they failed to realize the space
+  had any significance).  Since this violates the Principle of Least Surprise,
+  it has been changed.
+
 Voicemail:
 
 * The voicemail configuration values 'maxmessage' and 'minmessage' have
index cc14ba2..a18d29e 100644 (file)
@@ -7959,12 +7959,14 @@ void pbx_builtin_clear_globals(void)
 
 int pbx_checkcondition(const char *condition)
 {
-       if (ast_strlen_zero(condition)) /* NULL or empty strings are false */
+       int res;
+       if (ast_strlen_zero(condition)) {                /* NULL or empty strings are false */
                return 0;
-       else if (*condition >= '0' && *condition <= '9')        /* Numbers are evaluated for truth */
-               return atoi(condition);
-       else    /* Strings are true */
+       } else if (sscanf(condition, "%d", &res) == 1) { /* Numbers are evaluated for truth */
+               return res;
+       } else {                                         /* Strings are true */
                return 1;
+       }
 }
 
 static int pbx_builtin_gotoif(struct ast_channel *chan, void *data)