string_intrinsics.c (compare_string): Use memcmp instead of strncmp to avoid tripping over CHAR(0) in a string.

2006-05-28  Thomas Koenig  <Thomas.Koenig@online.de>

	* intrinsics/string_intrinsics.c (compare_string):
	Use memcmp instead of strncmp to avoid tripping over
	CHAR(0) in a string.

2006-05-28  Thomas Koenig  <Thomas.Koenig@online.de>

	* gfortran.dg/string_null_compare_1.f:  New test case.

From-SVN: r114175
This commit is contained in:
Thomas Koenig 2006-05-28 20:25:15 +00:00 committed by Thomas Koenig
parent 375277f69d
commit 6545ef83c1
4 changed files with 28 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2006-05-28 Thomas Koenig <Thomas.Koenig@online.de>
* intrinsics/string_intrinsics.c (compare_string):
Use memcmp instead of strncmp to avoid tripping over
CHAR(0) in a string.
2006-05-27 Richard Guenther <rguenther@suse.de>
PR middle-end/27773

View File

@ -0,0 +1,15 @@
! { dg-do run }
! PR 27784 - Different strings should compare unequal even if they
! have CHAR(0) in them.
program main
character*3 str1, str2
call setval(str1, str2)
if (str1 == str2) call abort
end
subroutine setval(str1, str2)
character*3 str1, str2
str1 = 'a' // CHAR(0) // 'a'
str2 = 'a' // CHAR(0) // 'c'
end

View File

@ -1,3 +1,9 @@
2006-05-28 Thomas Koenig <Thomas.Koenig@online.de>
* intrinsics/string_intrinsics.c (compare_string):
Use memcmp instead of strncmp to avoid tripping over
CHAR(0) in a string.
2006-05-27 Janne Blomqvist <jb@gcc.gnu.org>
* io/io.h (find_or_create_unit): Correct export declaration.

View File

@ -109,7 +109,7 @@ compare_string (GFC_INTEGER_4 len1, const char * s1,
const char *s;
int len;
res = strncmp (s1, s2, (len1 < len2) ? len1 : len2);
res = memcmp (s1, s2, (len1 < len2) ? len1 : len2);
if (res != 0)
return res;