Moriyoshi Koizumi
moriy****@users*****
2002年 12月 26日 (木) 06:44:50 JST
moriyoshi 02/12/26 06:44:50 Modified: . mbfl.def mbfl mbfilter.c mbfl_memory_device.c mbfl_string.c mbfl_string.h Log: Changed mbfl_string API Revision Changes Path 1.2 +3 -3 libmbfl/mbfl.def Index: mbfl.def =================================================================== RCS file: /cvsroot/php-i18n/libmbfl/mbfl.def,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- mbfl.def 25 Dec 2002 21:09:34 -0000 1.1 +++ mbfl.def 25 Dec 2002 21:44:50 -0000 1.2 @@ -81,6 +81,6 @@ _mbfl_wchar_device_init @76 _mbfl_wchar_device_output @77 _mbfl_wchar_device_clear @78 - _mbfl_string_init @79 - _mbfl_string_init_set @89 - _mbfl_string_clear @81 + _mbfl_string_ctor @79 + _mbfl_string_ctor2 @89 + _mbfl_string_dtor @81 1.15 +9 -8 libmbfl/mbfl/mbfilter.c Index: mbfilter.c =================================================================== RCS file: /cvsroot/php-i18n/libmbfl/mbfl/mbfilter.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- mbfilter.c 24 Dec 2002 18:00:11 -0000 1.14 +++ mbfilter.c 25 Dec 2002 21:44:50 -0000 1.15 @@ -100,6 +100,7 @@ #endif #include "mbfilter.h" +#include "mbfl_string.h" #include "mbfl_filter_output.h" #include "mbfilter_pass.h" @@ -686,7 +687,7 @@ if (encoding == NULL || string == NULL || result == NULL) { return NULL; } - mbfl_string_init(result); + mbfl_string_ctor(result); result->no_language = string->no_language; result->no_encoding = string->no_encoding; @@ -780,7 +781,7 @@ mbfl_convert_filter *encoder; mbfl_memory_device_init(&device, length + 1, 0); - mbfl_string_init(result); + mbfl_string_ctor(result); result->no_language = string->no_language; result->no_encoding = string->no_encoding; /* output code filter */ @@ -842,7 +843,7 @@ if (encoding == NULL || string == NULL || result == NULL) { return NULL; } - mbfl_string_init(result); + mbfl_string_ctor(result); result->no_language = string->no_language; result->no_encoding = string->no_encoding; @@ -1126,7 +1127,7 @@ if (string == NULL || result == NULL) { return NULL; } - mbfl_string_init(result); + mbfl_string_ctor(result); result->no_language = string->no_language; result->no_encoding = string->no_encoding; mbfl_memory_device_init(&pc.device, width, 0); @@ -1498,7 +1499,7 @@ return NULL; } mbfl_memory_device_init(&device, string->len, 0); - mbfl_string_init(result); + mbfl_string_ctor(result); result->no_language = string->no_language; result->no_encoding = string->no_encoding; decoder = mbfl_convert_filter_new( @@ -1793,7 +1794,7 @@ unsigned char *p; struct mime_header_encoder_data *pe; - mbfl_string_init(result); + mbfl_string_ctor(result); result->no_language = string->no_language; result->no_encoding = mbfl_encoding_id_ascii; @@ -2082,7 +2083,7 @@ unsigned char *p; struct mime_header_decoder_data *pd; - mbfl_string_init(result); + mbfl_string_ctor(result); result->no_language = string->no_language; result->no_encoding = outcode; @@ -2267,7 +2268,7 @@ if (string == NULL || result == NULL) { return NULL; } - mbfl_string_init(result); + mbfl_string_ctor(result); result->no_language = string->no_language; result->no_encoding = string->no_encoding; mbfl_memory_device_init(&device, string->len, 0); 1.5 +1 -0 libmbfl/mbfl/mbfl_memory_device.c Index: mbfl_memory_device.c =================================================================== RCS file: /cvsroot/php-i18n/libmbfl/mbfl/mbfl_memory_device.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- mbfl_memory_device.c 24 Dec 2002 18:00:11 -0000 1.4 +++ mbfl_memory_device.c 25 Dec 2002 21:44:50 -0000 1.5 @@ -116,6 +116,7 @@ result->len = device->pos; mbfl_memory_device_output4('\0', device); result->val = device->buffer; + result->val_allocated = 1; device->buffer = (unsigned char *)0; device->length = 0; device->pos= 0; 1.6 +22 -21 libmbfl/mbfl/mbfl_string.c Index: mbfl_string.c =================================================================== RCS file: /cvsroot/php-i18n/libmbfl/mbfl/mbfl_string.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- mbfl_string.c 25 Dec 2002 21:24:16 -0000 1.5 +++ mbfl_string.c 25 Dec 2002 21:44:50 -0000 1.6 @@ -36,41 +36,42 @@ #include <stddef.h> #endif +#include <assert.h> + #include "mbfl_allocators.h" #include "mbfl_string.h" /* * string object */ -void mbfl_string_init(mbfl_string *string) +void mbfl_string_ctor(mbfl_string *string) { - if (string) { - string->no_language = mbfl_language_id_uni; - string->no_encoding = mbfl_encoding_id_pass; - string->val = (unsigned char*)NULL; - string->len = 0; - } + assert(string != NULL); + + mbfl_string_ctor2(string, mbfl_language_id_uni, mbfl_encoding_id_pass); } -void mbfl_string_init_set(mbfl_string *string, mbfl_language_id no_language, mbfl_encoding_id no_encoding) +void mbfl_string_ctor2(mbfl_string *string, mbfl_language_id no_language, mbfl_encoding_id no_encoding) { - if (string) { - string->no_language = no_language; - string->no_encoding = no_encoding; - string->val = (unsigned char*)NULL; - string->len = 0; - } + assert(string != NULL); + + string->no_language = no_language; + string->no_encoding = no_encoding; + string->val = (unsigned char*)NULL; + string->val_allocated = 0; + string->len = 0; } -void mbfl_string_clear(mbfl_string *string) +void mbfl_string_dtor(mbfl_string *string) { - if (string) { - if (string->val != (unsigned char*)NULL) { - mbfl_free(string->val); - } - string->val = (unsigned char*)NULL; - string->len = 0; + assert(string != NULL); + + if (string->val != (unsigned char*)NULL && string->val_allocated) { + mbfl_free(string->val); } + string->val_allocated = 0; + string->val = (unsigned char*)NULL; + string->len = 0; } 1.4 +8 -3 libmbfl/mbfl/mbfl_string.h Index: mbfl_string.h =================================================================== RCS file: /cvsroot/php-i18n/libmbfl/mbfl/mbfl_string.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- mbfl_string.h 25 Dec 2002 18:07:18 -0000 1.3 +++ mbfl_string.h 25 Dec 2002 21:44:50 -0000 1.4 @@ -43,10 +43,15 @@ mbfl_encoding_id no_encoding; unsigned char *val; unsigned int len; + int val_allocated; } mbfl_string; -MBFLAPI void mbfl_string_init(mbfl_string *string); -MBFLAPI void mbfl_string_init_set(mbfl_string *string, mbfl_language_id no_language, mbfl_encoding_id no_encoding); -MBFLAPI void mbfl_string_clear(mbfl_string *string); +MBFLAPI void mbfl_string_ctor(mbfl_string *string); +MBFLAPI void mbfl_string_ctor2(mbfl_string *string, mbfl_language_id no_language, mbfl_encoding_id no_encoding); +MBFLAPI void mbfl_string_dtor(mbfl_string *string); + +#define mbfl_string_init mbfl_string_ctor +#define mbfl_string_init_set mbfl_string_ctor2 +#define mbfl_string_clear mbfl_string_dtor #endif /* MBFL_STRING_H */