ganapathi / rpms / mariadb

Forked from rpms/mariadb 4 years ago
Clone

Blame SOURCES/mariadb-strmov.patch

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