mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Remove redundant NULL checks in mbstring
Whoever originally wrote mbstring seems to have a deathly fear of NULL pointers lurking behind every corner. A common pattern is that one function will check if a pointer is NULL, then pass it to another function, which will again check if it is NULL, then pass to yet another function, which will yet again check if it is NULL... it's NULL checks all the way down. Remove all the NULL checks in places where pointers could not possibly be NULL.
This commit is contained in:
parent
626f0fec54
commit
a312620607
3 changed files with 34 additions and 99 deletions
|
@ -149,54 +149,34 @@ mbfl_buffer_converter_new(
|
|||
return convd;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
mbfl_buffer_converter_delete(mbfl_buffer_converter *convd)
|
||||
void mbfl_buffer_converter_delete(mbfl_buffer_converter *convd)
|
||||
{
|
||||
if (convd != NULL) {
|
||||
if (convd->filter1) {
|
||||
mbfl_convert_filter_delete(convd->filter1);
|
||||
}
|
||||
if (convd->filter2) {
|
||||
mbfl_convert_filter_delete(convd->filter2);
|
||||
}
|
||||
mbfl_memory_device_clear(&convd->device);
|
||||
efree((void*)convd);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode)
|
||||
void mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode)
|
||||
{
|
||||
if (convd != NULL) {
|
||||
if (convd->filter2 != NULL) {
|
||||
if (convd->filter2) {
|
||||
convd->filter2->illegal_mode = mode;
|
||||
} else if (convd->filter1 != NULL) {
|
||||
} else {
|
||||
convd->filter1->illegal_mode = mode;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar)
|
||||
void mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar)
|
||||
{
|
||||
if (convd != NULL) {
|
||||
if (convd->filter2 != NULL) {
|
||||
if (convd->filter2) {
|
||||
convd->filter2->illegal_substchar = substchar;
|
||||
} else if (convd->filter1 != NULL) {
|
||||
convd->filter1->illegal_substchar = substchar;
|
||||
} else {
|
||||
return 0;
|
||||
convd->filter1->illegal_substchar = substchar;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
size_t mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string)
|
||||
{
|
||||
size_t n;
|
||||
|
@ -223,59 +203,30 @@ size_t mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *str
|
|||
return p - string->val;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mbfl_buffer_converter_flush(mbfl_buffer_converter *convd)
|
||||
void mbfl_buffer_converter_flush(mbfl_buffer_converter *convd)
|
||||
{
|
||||
if (convd == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (convd->filter1 != NULL) {
|
||||
mbfl_convert_filter_flush(convd->filter1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
mbfl_string *
|
||||
mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result)
|
||||
mbfl_string* mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result)
|
||||
{
|
||||
if (convd == NULL || result == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
result->encoding = convd->to;
|
||||
return mbfl_memory_device_result(&convd->device, result);
|
||||
}
|
||||
|
||||
mbfl_string *
|
||||
mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string,
|
||||
mbfl_string *result)
|
||||
mbfl_string* mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string, mbfl_string *result)
|
||||
{
|
||||
if (convd == NULL || string == NULL || result == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
mbfl_buffer_converter_feed(convd, string);
|
||||
if (convd->filter1 != NULL) {
|
||||
mbfl_convert_filter_flush(convd->filter1);
|
||||
}
|
||||
result->encoding = convd->to;
|
||||
return mbfl_memory_device_result(&convd->device, result);
|
||||
}
|
||||
|
||||
size_t mbfl_buffer_illegalchars(mbfl_buffer_converter *convd)
|
||||
{
|
||||
size_t num_illegalchars = 0;
|
||||
size_t num_illegalchars = convd->filter1->num_illegalchar;
|
||||
|
||||
if (convd == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (convd->filter1 != NULL) {
|
||||
num_illegalchars += convd->filter1->num_illegalchar;
|
||||
}
|
||||
|
||||
if (convd->filter2 != NULL) {
|
||||
if (convd->filter2) {
|
||||
num_illegalchars += convd->filter2->num_illegalchar;
|
||||
}
|
||||
|
||||
|
@ -399,16 +350,10 @@ mbfl_convert_encoding(
|
|||
size_t n;
|
||||
unsigned char *p;
|
||||
mbfl_memory_device device;
|
||||
mbfl_convert_filter *filter1;
|
||||
mbfl_convert_filter *filter2;
|
||||
mbfl_convert_filter *filter1 = NULL;
|
||||
mbfl_convert_filter *filter2 = NULL;
|
||||
|
||||
/* initialize */
|
||||
if (toenc == NULL || string == NULL || result == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
filter1 = NULL;
|
||||
filter2 = NULL;
|
||||
if (mbfl_convert_filter_get_vtbl(string->encoding, toenc) != NULL) {
|
||||
filter1 = mbfl_convert_filter_new(string->encoding, toenc, mbfl_memory_device_output, 0, &device);
|
||||
} else {
|
||||
|
@ -1385,9 +1330,6 @@ mbfl_strimwidth(
|
|||
size_t n, mkwidth;
|
||||
unsigned char *p;
|
||||
|
||||
if (string == NULL || result == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
mbfl_string_init(result);
|
||||
result->encoding = string->encoding;
|
||||
mbfl_memory_device_init(&pc.device, MIN(string->len, width), 0);
|
||||
|
@ -2505,9 +2447,6 @@ mbfl_html_numeric_entity(
|
|||
size_t n;
|
||||
unsigned char *p;
|
||||
|
||||
if (string == NULL || result == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
mbfl_string_init(result);
|
||||
result->encoding = string->encoding;
|
||||
mbfl_memory_device_init(&device, string->len, 0);
|
||||
|
|
|
@ -141,10 +141,10 @@ struct _mbfl_buffer_converter {
|
|||
|
||||
MBFLAPI extern mbfl_buffer_converter * mbfl_buffer_converter_new(const mbfl_encoding *from, const mbfl_encoding *to, size_t buf_initsz);
|
||||
MBFLAPI extern void mbfl_buffer_converter_delete(mbfl_buffer_converter *convd);
|
||||
MBFLAPI extern int mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode);
|
||||
MBFLAPI extern int mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar);
|
||||
MBFLAPI extern void mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode);
|
||||
MBFLAPI extern void mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar);
|
||||
MBFLAPI extern size_t mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string);
|
||||
MBFLAPI extern int mbfl_buffer_converter_flush(mbfl_buffer_converter *convd);
|
||||
MBFLAPI extern void mbfl_buffer_converter_flush(mbfl_buffer_converter *convd);
|
||||
MBFLAPI extern mbfl_string * mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result);
|
||||
MBFLAPI extern mbfl_string * mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string, mbfl_string *result);
|
||||
MBFLAPI extern size_t mbfl_buffer_illegalchars(mbfl_buffer_converter *convd);
|
||||
|
|
|
@ -363,7 +363,7 @@ MBSTRING_API char *php_unicode_convert_case(
|
|||
{
|
||||
struct convert_case_data data;
|
||||
mbfl_convert_filter *from_wchar, *to_wchar;
|
||||
mbfl_string result, *result_ptr;
|
||||
mbfl_string result;
|
||||
|
||||
mbfl_memory_device device;
|
||||
mbfl_memory_device_init(&device, srclen + 1, 0);
|
||||
|
@ -410,14 +410,10 @@ MBSTRING_API char *php_unicode_convert_case(
|
|||
|
||||
mbfl_convert_filter_flush(to_wchar);
|
||||
mbfl_convert_filter_flush(from_wchar);
|
||||
result_ptr = mbfl_memory_device_result(&device, &result);
|
||||
mbfl_memory_device_result(&device, &result);
|
||||
mbfl_convert_filter_delete(to_wchar);
|
||||
mbfl_convert_filter_delete(from_wchar);
|
||||
|
||||
if (!result_ptr) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*ret_len = result.len;
|
||||
return (char *) result.val;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue