41 lines
1.3 KiB
Diff
41 lines
1.3 KiB
Diff
![]() |
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.
|
||
|
|
||
|
---
|
||
|
include/m_string.h | 8 --------
|
||
|
1 file changed, 8 deletions(-)
|
||
|
|
||
|
diff --git a/include/m_string.h b/include/m_string.h
|
||
|
index 7437ea8..bb3ab57 100644
|
||
|
--- a/include/m_string.h
|
||
|
+++ b/include/m_string.h
|
||
|
@@ -73,14 +73,6 @@
|
||
|
extern void *(*my_str_realloc)(void *, size_t);
|
||
|
extern void (*my_str_free)(void *);
|
||
|
|
||
|
-#ifdef DBUG_OFF
|
||
|
-#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
|
||
|
-#endif
|
||
|
-
|
||
|
/* Declared in int2str() */
|
||
|
extern const char _dig_vec_upper[];
|
||
|
extern const char _dig_vec_lower[];
|
||
|
--
|
||
|
1.9.1
|
||
|
|