mirror of
https://github.com/php/php-src.git
synced 2024-11-23 18:04:36 +08:00
MFH: do not fail & segfault if malloc(0) returns NULL, that's expected
This commit is contained in:
parent
a00ca091eb
commit
3b7051bea2
@ -143,46 +143,52 @@ static void read_types(char **tzf, timelib_tzinfo *tz)
|
||||
memcpy(tz->timezone_abbr, *tzf, sizeof(char) * tz->charcnt);
|
||||
*tzf += sizeof(char) * tz->charcnt;
|
||||
|
||||
leap_buffer = (int32_t *) malloc(tz->leapcnt * 2 * sizeof(int32_t));
|
||||
if (!leap_buffer) {
|
||||
return;
|
||||
}
|
||||
memcpy(leap_buffer, *tzf, sizeof(int32_t) * tz->leapcnt * 2);
|
||||
*tzf += sizeof(int32_t) * tz->leapcnt * 2;
|
||||
if (tz->leapcnt) {
|
||||
leap_buffer = (int32_t *) malloc(tz->leapcnt * 2 * sizeof(int32_t));
|
||||
if (!leap_buffer) {
|
||||
return;
|
||||
}
|
||||
memcpy(leap_buffer, *tzf, sizeof(int32_t) * tz->leapcnt * 2);
|
||||
*tzf += sizeof(int32_t) * tz->leapcnt * 2;
|
||||
|
||||
tz->leap_times = (tlinfo*) malloc(tz->leapcnt * sizeof(tlinfo));
|
||||
if (!tz->leap_times) {
|
||||
return;
|
||||
tz->leap_times = (tlinfo*) malloc(tz->leapcnt * sizeof(tlinfo));
|
||||
if (!tz->leap_times) {
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < tz->leapcnt; i++) {
|
||||
tz->leap_times[i].trans = timelib_conv_int(leap_buffer[i * 2]);
|
||||
tz->leap_times[i].offset = timelib_conv_int(leap_buffer[i * 2 + 1]);
|
||||
}
|
||||
free(leap_buffer);
|
||||
}
|
||||
for (i = 0; i < tz->leapcnt; i++) {
|
||||
tz->leap_times[i].trans = timelib_conv_int(leap_buffer[i * 2]);
|
||||
tz->leap_times[i].offset = timelib_conv_int(leap_buffer[i * 2 + 1]);
|
||||
}
|
||||
free(leap_buffer);
|
||||
|
||||
buffer = (unsigned char*) malloc(tz->ttisstdcnt * sizeof(unsigned char));
|
||||
if (!buffer) {
|
||||
return;
|
||||
}
|
||||
memcpy(buffer, *tzf, sizeof(unsigned char) * tz->ttisstdcnt);
|
||||
*tzf += sizeof(unsigned char) * tz->ttisstdcnt;
|
||||
|
||||
for (i = 0; i < tz->ttisstdcnt; i++) {
|
||||
tz->type[i].isstdcnt = buffer[i];
|
||||
}
|
||||
free(buffer);
|
||||
if (tz->ttisstdcnt) {
|
||||
buffer = (unsigned char*) malloc(tz->ttisstdcnt * sizeof(unsigned char));
|
||||
if (!buffer) {
|
||||
return;
|
||||
}
|
||||
memcpy(buffer, *tzf, sizeof(unsigned char) * tz->ttisstdcnt);
|
||||
*tzf += sizeof(unsigned char) * tz->ttisstdcnt;
|
||||
|
||||
buffer = (unsigned char*) malloc(tz->ttisgmtcnt * sizeof(unsigned char));
|
||||
if (!buffer) {
|
||||
return;
|
||||
for (i = 0; i < tz->ttisstdcnt; i++) {
|
||||
tz->type[i].isstdcnt = buffer[i];
|
||||
}
|
||||
free(buffer);
|
||||
}
|
||||
memcpy(buffer, *tzf, sizeof(unsigned char) * tz->ttisgmtcnt);
|
||||
*tzf += sizeof(unsigned char) * tz->ttisgmtcnt;
|
||||
|
||||
for (i = 0; i < tz->ttisgmtcnt; i++) {
|
||||
tz->type[i].isgmtcnt = buffer[i];
|
||||
if (tz->ttisgmtcnt) {
|
||||
buffer = (unsigned char*) malloc(tz->ttisgmtcnt * sizeof(unsigned char));
|
||||
if (!buffer) {
|
||||
return;
|
||||
}
|
||||
memcpy(buffer, *tzf, sizeof(unsigned char) * tz->ttisgmtcnt);
|
||||
*tzf += sizeof(unsigned char) * tz->ttisgmtcnt;
|
||||
|
||||
for (i = 0; i < tz->ttisgmtcnt; i++) {
|
||||
tz->type[i].isgmtcnt = buffer[i];
|
||||
}
|
||||
free(buffer);
|
||||
}
|
||||
free(buffer);
|
||||
}
|
||||
|
||||
static void read_location(char **tzf, timelib_tzinfo *tz)
|
||||
|
Loading…
Reference in New Issue
Block a user