Compaq C warns that "the expression 'p=scan_esc(p)' modifies the variable
authorAndy Polyakov <appro@openssl.org>
Tue, 6 Jun 2000 15:21:12 +0000 (15:21 +0000)
committerAndy Polyakov <appro@openssl.org>
Tue, 6 Jun 2000 15:21:12 +0000 (15:21 +0000)
'p' more than once without an intervening sequence point.  This behavior
is undefined." What it essentially complains about is 'p=p+=1'. Now it's
changed to 'p=p+1'...

crypto/conf/conf_def.c

index f7d088d..773df32 100644 (file)
@@ -59,6 +59,7 @@
 /* Part of the code in here was originally in conf.c, which is now removed */
 
 #include <stdio.h>
+#include <string.h>
 #include <openssl/stack.h>
 #include <openssl/lhash.h>
 #include <openssl/conf.h>
@@ -73,7 +74,7 @@ static void clear_comments(CONF *conf, char *p);
 static int str_copy(CONF *conf,char *section,char **to, char *from);
 static char *scan_quote(CONF *conf, char *p);
 static char *scan_dquote(CONF *conf, char *p);
-#define scan_esc(p)    (((IS_EOF((conf),(p)[1]))?(p+=1):(p+=2)))
+#define scan_esc(conf,p)       (((IS_EOF((conf),(p)[1]))?((p)+1):((p)+2)))
 
 static CONF *def_create(CONF_METHOD *meth);
 static int def_init_default(CONF *conf);
@@ -465,7 +466,7 @@ static void clear_comments(CONF *conf, char *p)
                        }
                if (IS_ESC(conf,*p))
                        {
-                       p=scan_esc(p);
+                       p=scan_esc(conf,p);
                        continue;
                        }
                if (IS_EOF(conf,*p))
@@ -624,7 +625,7 @@ static char *eat_alpha_numeric(CONF *conf, char *p)
                {
                if (IS_ESC(conf,*p))
                        {
-                       p=scan_esc(p);
+                       p=scan_esc(conf,p);
                        continue;
                        }
                if (!IS_ALPHA_NUMERIC_PUNCT(conf,*p))