Bug #48866: mysql.test fails under Fedora 12
strmov() is not guaranteed to work correctly on overlapping source and destination buffers. On some OSes it may work, but Fedora 12 has a stpcpy() that's not working correctly on overlapping buffers. Fixed to use the overlap-safe version of strmov instead. Re-vitalized the overlap-safe version of strmov.
This commit is contained in:
parent
1f55f5b617
commit
adc17cd41e
@ -4108,7 +4108,7 @@ char *get_arg(char *line, my_bool get_next_arg)
|
||||
if (*ptr == '\\' && ptr[1]) // escaped character
|
||||
{
|
||||
// Remove the backslash
|
||||
strmov(ptr, ptr+1);
|
||||
strmov_overlapp(ptr, ptr+1);
|
||||
}
|
||||
else if ((!quoted && *ptr == ' ') || (quoted && *ptr == qtype))
|
||||
{
|
||||
|
@ -108,9 +108,7 @@ extern char NEAR _dig_vec_lower[];
|
||||
/* Defined in strtod.c */
|
||||
extern const double log_10[309];
|
||||
|
||||
#ifdef BAD_STRING_COMPILER
|
||||
#define strmov(A,B) (memccpy(A,B,0,INT_MAX)-1)
|
||||
#else
|
||||
#ifndef strmov
|
||||
#define strmov_overlapp(A,B) strmov(A,B)
|
||||
#define strmake_overlapp(A,B,C) strmake(A,B,C)
|
||||
#endif
|
||||
@ -171,12 +169,11 @@ extern uint strinstr(const char *str,const char *search);
|
||||
extern uint r_strinstr(reg1 my_string str,int from, reg4 my_string search);
|
||||
extern char *strkey(char *dst,char *head,char *tail,char *flags);
|
||||
extern char *strmake(char *dst,const char *src,uint length);
|
||||
#ifndef strmake_overlapp
|
||||
extern char *strmake_overlapp(char *dst,const char *src, uint length);
|
||||
#endif
|
||||
|
||||
#ifndef strmov
|
||||
extern char *strmov(char *dst,const char *src);
|
||||
#else
|
||||
extern char *strmov_overlapp(char *dst,const char *src);
|
||||
#endif
|
||||
extern char *strnmov(char *dst,const char *src,uint n);
|
||||
extern char *strsuff(const char *src,const char *suffix);
|
||||
|
@ -24,13 +24,11 @@
|
||||
#include <my_global.h>
|
||||
#include "m_string.h"
|
||||
|
||||
#ifdef BAD_STRING_COMPILER
|
||||
#ifdef strmov
|
||||
#undef strmov
|
||||
#define strmov strmov_overlapp
|
||||
#endif
|
||||
|
||||
#ifndef strmov
|
||||
|
||||
#if !defined(MC68000) && !defined(DS90)
|
||||
|
||||
char *strmov(register char *dst, register const char *src)
|
||||
@ -53,5 +51,3 @@ char *strmov(dst, src)
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* strmov */
|
||||
|
Loading…
x
Reference in New Issue
Block a user