You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.3 KiB
30 lines
1.3 KiB
Remove overly optimistic definition of strmov() as stpcpy(). |
|
|
|
mysql uses this macro with overlapping source and destination strings, |
|
which is verboten per spec, and fails on some Red Hat platforms. |
|
Deleting the definition is sufficient to make it fall back to a |
|
byte-at-a-time copy loop, which should consistently give the |
|
expected behavior. |
|
|
|
Note: the particular case that prompted this patch is reported and fixed |
|
at http://bugs.mysql.com/bug.php?id=48864. However, my faith in upstream's |
|
ability to detect this type of error is low, and I also see little evidence |
|
of any real performance gain from optimizing these calls. So I'm keeping |
|
this patch. |
|
|
|
diff -up mariadb-10.0.15/include/m_string.h.orig mariadb-10.0.15/include/m_string.h |
|
--- mariadb-10.0.15/include/m_string.h.orig 2014-11-27 14:40:32.622032698 +0100 |
|
+++ mariadb-10.0.15/include/m_string.h 2014-11-27 14:38:56.211864712 +0100 |
|
@@ -73,12 +73,6 @@ extern void *(*my_str_malloc)(size_t); |
|
extern void *(*my_str_realloc)(void *, size_t); |
|
extern void (*my_str_free)(void *); |
|
|
|
-#if defined(HAVE_STPCPY) && MY_GNUC_PREREQ(3, 4) && !defined(__INTEL_COMPILER) |
|
-#define strmov(A,B) __builtin_stpcpy((A),(B)) |
|
-#elif defined(HAVE_STPCPY) |
|
-#define strmov(A,B) stpcpy((A),(B)) |
|
-#endif |
|
- |
|
/* Declared in int2str() */ |
|
extern const char _dig_vec_upper[]; |
|
extern const char _dig_vec_lower[];
|
|
|