]> granicus.if.org Git - php/commitdiff
Change php_addslashes() a little.
authorYasuo Ohgaki <yohgaki@php.net>
Tue, 12 Mar 2002 07:05:40 +0000 (07:05 +0000)
committerYasuo Ohgaki <yohgaki@php.net>
Tue, 12 Mar 2002 07:05:40 +0000 (07:05 +0000)
Since most users do not use magic_quote_sybase, be nicer to
users not using magic_quote_sybase.

ext/standard/string.c

index dad7f5c03bb1e73d9e05c58e1ab09e69045669b3..e255dc09b587a7d968c07f4aefd43c32e88e7772 100644 (file)
@@ -2396,29 +2396,41 @@ PHPAPI char *php_addslashes(char *str, int length, int *new_length, int should_f
                return str;
        }
        new_str = (char *) emalloc((length?length:(length=strlen(str)))*2+1);
-       for (source=str, end=source+length, target=new_str; source<end; source++) {
-               c = *source;
-               switch(c) {
-                       case '\0':
-                               *target++ = '\\';
-                               *target++ = '0';
-                               break;
-                       case '\'':
-                               if (PG(magic_quotes_sybase)) {
+       if (PG(magic_quotes_sybase)) {
+               for (source=str, end=source+length, target=new_str; source<end; source++) {
+                       c = *source;
+                       switch(c) {
+                               case '\0':
+                                       *target++ = '\\';
+                                       *target++ = '0';
+                                       break;
+                               case '\'':
                                        *target++ = '\'';
                                        *target++ = '\'';
                                        break;
-                               }
-                               /* break is missing *intentionally* */
-                       case '\"':
-                       case '\\':
-                               if (!PG(magic_quotes_sybase)) {
-                                       *target++ = '\\';
-                               }
-                               /* break is missing *intentionally* */
-                       default:
-                               *target++ = c;
+                               default:
+                                       *target++ = c;
                                break;
+                       }
+               }
+       }
+       else {
+               for (source=str, end=source+length, target=new_str; source<end; source++) {
+                       c = *source;
+                       switch(c) {
+                               case '\0':
+                                       *target++ = '\\';
+                                       *target++ = '0';
+                                       break;
+                               case '\'':
+                               case '\"':
+                               case '\\':
+                                       *target++ = '\\';
+                                       /* break is missing *intentionally* */
+                               default:
+                                       *target++ = c;
+                                       break;
+                       }
                }
        }
        *target = 0;