diff options
author | monty@donna.mysql.com <> | 2001-01-08 00:04:30 +0200 |
---|---|---|
committer | monty@donna.mysql.com <> | 2001-01-08 00:04:30 +0200 |
commit | 6d0e529042f175d4a0522235239f33e8eca41cfb (patch) | |
tree | 500feaf42e43ee02e3822a280b03319bcd8f3abe /mysys | |
parent | 7541a877bcc007f58cb218fe18a4f4b18c7ba71a (diff) | |
download | mariadb-git-6d0e529042f175d4a0522235239f33e8eca41cfb.tar.gz |
Fixed bug when having many binary log files
Fixed bug when deleting keys with possible NULL values
many changes to mysqltest
Diffstat (limited to 'mysys')
-rw-r--r-- | mysys/mf_iocache2.c | 6 | ||||
-rw-r--r-- | mysys/string.c | 18 | ||||
-rw-r--r-- | mysys/typelib.c | 2 |
3 files changed, 18 insertions, 8 deletions
diff --git a/mysys/mf_iocache2.c b/mysys/mf_iocache2.c index 9880c1615bb..1397c14515b 100644 --- a/mysys/mf_iocache2.c +++ b/mysys/mf_iocache2.c @@ -100,6 +100,7 @@ uint my_b_fill(IO_CACHE *info) uint my_b_gets(IO_CACHE *info, char *to, uint max_length) { + char *start = to; uint length; max_length--; /* Save place for end \0 */ /* Calculate number of characters in buffer */ @@ -115,10 +116,9 @@ uint my_b_gets(IO_CACHE *info, char *to, uint max_length) { if ((*to++ = *pos++) == '\n') { - length= (uint) (pos-info->rc_pos); info->rc_pos=pos; *to='\0'; - return length; + return (uint) (to-start); } } if (!(max_length-=length)) @@ -126,7 +126,7 @@ uint my_b_gets(IO_CACHE *info, char *to, uint max_length) /* Found enough charcters; Return found string */ info->rc_pos=pos; *to='\0'; - return length; + return (uint) (to-start); } if (!(length=my_b_fill(info))) return 0; diff --git a/mysys/string.c b/mysys/string.c index 0696c72b922..96a503c1179 100644 --- a/mysys/string.c +++ b/mysys/string.c @@ -48,6 +48,7 @@ my_bool init_dynamic_string(DYNAMIC_STRING *str, const char *init_str, DBUG_RETURN(FALSE); } + my_bool dynstr_set(DYNAMIC_STRING *str, const char *init_str) { uint length; @@ -72,6 +73,7 @@ my_bool dynstr_set(DYNAMIC_STRING *str, const char *init_str) DBUG_RETURN(FALSE); } + my_bool dynstr_realloc(DYNAMIC_STRING *str, ulong additional_size) { DBUG_ENTER("dynstr_realloc"); @@ -90,11 +92,17 @@ my_bool dynstr_realloc(DYNAMIC_STRING *str, ulong additional_size) my_bool dynstr_append(DYNAMIC_STRING *str, const char *append) { + return dynstr_append_mem(str,append,strlen(append)); +} + + +my_bool dynstr_append_mem(DYNAMIC_STRING *str, const char *append, + uint length) +{ char *new_ptr; - uint length=(uint) strlen(append)+1; - if (str->length+length > str->max_length) + if (str->length+length >= str->max_length) { - uint new_length=(str->length+length+str->alloc_increment-1)/ + uint new_length=(str->length+length+str->alloc_increment)/ str->alloc_increment; new_length*=str->alloc_increment; if (!(new_ptr=(char*) my_realloc(str->str,new_length,MYF(MY_WME)))) @@ -103,10 +111,12 @@ my_bool dynstr_append(DYNAMIC_STRING *str, const char *append) str->max_length=new_length; } memcpy(str->str + str->length,append,length); - str->length+=length-1; + str->length+=length; + str->str[str->length]=0; /* Safety for C programs */ return FALSE; } + void dynstr_free(DYNAMIC_STRING *str) { if (str->str) diff --git a/mysys/typelib.c b/mysys/typelib.c index 903a7304065..929278d1b8f 100644 --- a/mysys/typelib.c +++ b/mysys/typelib.c @@ -26,7 +26,7 @@ ** If part, uniq field is found and full_name == 0 then x is expanded ** to full field. ** full_name has the following bit values: -** If & 1 accept only hole names +** If & 1 accept only whole names ** If & 2 don't expand if half field ** If & 4 allow #number# as type ****************************************************************************/ |