Changeset: 32f71cab2c3b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=32f71cab2c3b
Modified Files:
        gdk/gdk_utils.c
        sql/test/Tests/str-pad.sql
        sql/test/Tests/str-pad.stable.out
Branch: Jul2017
Log Message:

GDKstrndup with size 0 should return an empty string, not no string.
This fixes bug 6414.


diffs (64 lines):

diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1659,11 +1659,12 @@ GDKstrndup(const char *s, size_t size)
 {
        char *p;
 
-       if (s == NULL || size == 0)
+       if (s == NULL)
                return NULL;
        if ((p = GDKmalloc_internal(size + 1)) == NULL)
                return NULL;
-       memcpy(p, s, size);
+       if (size > 0)
+               memcpy(p, s, size);
        p[size] = '\0';         /* make sure it's NULL terminated */
        return p;
 }
diff --git a/sql/test/Tests/str-pad.sql b/sql/test/Tests/str-pad.sql
--- a/sql/test/Tests/str-pad.sql
+++ b/sql/test/Tests/str-pad.sql
@@ -35,3 +35,8 @@ SELECT '#' || rpad(s, n, s2) || '#' FROM
 DROP TABLE p;
 DROP TABLE p2;
 
+-- see bug 6414
+SELECT '#' || rpad('hi颖xyäbcdef', 0) || '#';
+SELECT '#' || lpad('hi颖xyäbcdef', 0) || '#';
+SELECT '#' || rpad('hi颖xyäbcdef', 0, 'junk') || '#';
+SELECT '#' || lpad('hi颖xyäbcdef', 0, 'junk') || '#';
diff --git a/sql/test/Tests/str-pad.stable.out 
b/sql/test/Tests/str-pad.stable.out
--- a/sql/test/Tests/str-pad.stable.out
+++ b/sql/test/Tests/str-pad.stable.out
@@ -232,6 +232,30 @@ Ready.
 [ "#hi颖xyäbcd#"        ]
 #DROP TABLE p;
 #DROP TABLE p2;
+#SELECT '#' || rpad('hi颖xyäbcdef', 0) || '#';
+% .L2 # table_name
+% L2 # name
+% varchar # type
+% 2 # length
+[ "##" ]
+#SELECT '#' || lpad('hi颖xyäbcdef', 0) || '#';
+% .L2 # table_name
+% L2 # name
+% varchar # type
+% 2 # length
+[ "##" ]
+#SELECT '#' || rpad('hi颖xyäbcdef', 0, 'junk') || '#';
+% .L2 # table_name
+% L2 # name
+% varchar # type
+% 2 # length
+[ "##" ]
+#SELECT '#' || lpad('hi颖xyäbcdef', 0, 'junk') || '#';
+% .L2 # table_name
+% L2 # name
+% varchar # type
+% 2 # length
+[ "##" ]
 
 # 22:57:30 >  
 # 22:57:30 >  "Done."
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to