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