9c7c797
Remove overly optimistic definition of strmov() as stpcpy().
9c7c797
9c7c797
mysql uses this macro with overlapping source and destination strings,
9c7c797
which is verboten per spec, and fails on some Red Hat platforms.
9c7c797
Deleting the definition is sufficient to make it fall back to a
9c7c797
byte-at-a-time copy loop, which should consistently give the
9c7c797
expected behavior.
9c7c797
9c7c797
Note: the particular case that prompted this patch is reported and fixed
9c7c797
at http://bugs.mysql.com/bug.php?id=48864.  However, my faith in upstream's
9c7c797
ability to detect this type of error is low, and I also see little evidence
9c7c797
of any real performance gain from optimizing these calls.  So I'm keeping
9c7c797
this patch.
9c7c797
9c7c797
diff -up mariadb-5.5.28a/include/m_string.h.p2 mariadb-5.5.28a/include/m_string.h
9c7c797
--- mariadb-5.5.28a/include/m_string.h.p2	2012-12-17 16:14:19.140536799 +0100
9c7c797
+++ mariadb-5.5.28a/include/m_string.h	2012-12-17 16:15:40.036567242 +0100
9c7c797
@@ -79,12 +79,6 @@ extern "C" {
9c7c797
 extern void *(*my_str_malloc)(size_t);
9c7c797
 extern void (*my_str_free)(void *);
9c7c797
 
9c7c797
-#if defined(HAVE_STPCPY) && MY_GNUC_PREREQ(3, 4) && !defined(__INTEL_COMPILER)
9c7c797
-#define strmov(A,B) __builtin_stpcpy((A),(B))
9c7c797
-#elif defined(HAVE_STPCPY)
9c7c797
-#define strmov(A,B) stpcpy((A),(B))
9c7c797
-#endif
9c7c797
-
9c7c797
 /* Declared in int2str() */
9c7c797
 extern const char _dig_vec_upper[];
9c7c797
 extern const char _dig_vec_lower[];