diff options
-rw-r--r-- | ext/exif/exif.c | 633 |
1 files changed, 310 insertions, 323 deletions
diff --git a/ext/exif/exif.c b/ext/exif/exif.c index 7a8b694622..5a8203489f 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -93,6 +93,8 @@ typedef unsigned char uchar; # define max(a,b) ((a)>(b) ? (a) : (b)) #endif +#define EFREE_IF(ptr) if (ptr) efree(ptr) + /* {{{ exif_functions[] */ function_entry exif_functions[] = { @@ -114,8 +116,8 @@ PHP_MINFO_FUNCTION(exif); PHP_MINFO_FUNCTION(exif) { php_info_print_table_start(); - php_info_print_table_row(2, "EXIF Support", "enabled" ); - php_info_print_table_row(2, "EXIF Version", EXIF_VERSION ); + php_info_print_table_row(2, "EXIF Support", "enabled"); + php_info_print_table_row(2, "EXIF Version", EXIF_VERSION); php_info_print_table_row(2, "Supported EXIF Version", "02100"); php_info_print_table_row(2, "Supported filetypes", "JPEG,TIFF"); php_info_print_table_end(); @@ -167,13 +169,13 @@ ZEND_GET_MODULE(exif) /* {{{ php_strnlen * get length of string if buffer if less than buffer size or buffer size */ -static size_t php_strnlen( char* str, size_t maxlen) { +static size_t php_strnlen(char* str, size_t maxlen) { size_t len = 0; - if ( str && maxlen && *str) { + if (str && maxlen && *str) { do { len++; - } while ( --maxlen && *(++str)); + } while (--maxlen && *(++str)); } return len; } @@ -509,11 +511,13 @@ static char * exif_get_tagname(int tag_num, char *ret, int len) char tmp[32]; for (i=0;;i++) { - if ( (t=TagTable[i].Tag) == tag_num || !t) { + if ((t=TagTable[i].Tag) == tag_num || !t) { if (ret && len) { - if ( !t) break; + if (!t) { + break; + } strncpy(ret, TagTable[i].Desc, abs(len)); - if ( len<0) { + if (len<0) { len = -len; ret[len-1]='\0'; for(i=strlen(ret);i<len;i++)ret[i]=' '; @@ -527,7 +531,7 @@ static char * exif_get_tagname(int tag_num, char *ret, int len) if (ret && len) { sprintf(tmp, "UndefinedTag:0x%04X", tag_num); strncpy(ret, tmp, abs(len)); - if ( len<0) { + if (len<0) { len = -len; ret[len-1]='\0'; for(i=strlen(ret);i<len;i++)ret[i]=' '; @@ -542,13 +546,12 @@ static char * exif_get_tagname(int tag_num, char *ret, int len) /* {{{ exif_char_dump * Do not use! This is a debug function... */ #ifdef EXIF_DEBUG -static unsigned char* exif_char_dump( unsigned char * addr, int len, int hex) +static unsigned char* exif_char_dump(unsigned char * addr, int len, int hex) { static unsigned char buf[1024+1]; int c, i, p=0, n = hex ? 5 : 3; - for(i=0; i<len && p+n<=sizeof(buf); i++) - { + for(i=0; i<len && p+n<=sizeof(buf); i++) { if (i%64==0) buf[p++] = '\n'; c = *addr++; @@ -603,12 +606,12 @@ static signed short php_ifd_get16s(void *value, int motorola_intel) static int php_ifd_get32s(void *value, int motorola_intel) { if (motorola_intel) { - return ((( char *)value)[0] << 24) + return (((char *)value)[0] << 24) | (((uchar *)value)[1] << 16) | (((uchar *)value)[2] << 8 ) | (((uchar *)value)[3] ); } else { - return ((( char *)value)[3] << 24) + return (((char *)value)[3] << 24) | (((uchar *)value)[2] << 16) | (((uchar *)value)[1] << 8 ) | (((uchar *)value)[0] ); @@ -853,7 +856,7 @@ static char *exif_get_sectionlist(int sectionlist) len += strlen(exif_get_sectionname(i))+2; } sections = emalloc(len+1); - if ( !sections) { + if (!sections) { EXIF_ERRLOG_EALLOC return NULL; } @@ -951,22 +954,24 @@ typedef struct { Add a file_section to image_info returns the used block or -1. if size>0 and data == NULL buffer of size is allocated */ -int exif_file_sections_add(image_info_type *ImageInfo, int type, size_t size, uchar *data) +static int exif_file_sections_add(image_info_type *ImageInfo, int type, size_t size, uchar *data) { file_section *tmp; int count = ImageInfo->file.count; tmp = erealloc(ImageInfo->file.list, (count+1)*sizeof(file_section)); - if ( tmp == NULL) return 0; + if (tmp == NULL) { + return 0; + } ImageInfo->file.list = tmp; ImageInfo->file.list[count].type = 0xFFFF; ImageInfo->file.list[count].data = NULL; ImageInfo->file.list[count].size = 0; ImageInfo->file.count = count+1; - if ( !size) { + if (!size) { data = NULL; - } else if ( data == NULL) { - if ( (data = emalloc(size)) == NULL) { + } else if (data == NULL) { + if ((data = emalloc(size)) == NULL) { return -1; } } @@ -980,15 +985,15 @@ int exif_file_sections_add(image_info_type *ImageInfo, int type, size_t size, uc /* {{{ exif_file_sections_realloc Reallocate a file section returns 0 on success and -1 on failure */ -int exif_file_sections_realloc(image_info_type *ImageInfo, int section_index, size_t size) +static int exif_file_sections_realloc(image_info_type *ImageInfo, int section_index, size_t size) { void *tmp; - if ( section_index >= ImageInfo->file.count) { + if (section_index >= ImageInfo->file.count) { EXIF_ERRLOG_FSREALLOC return -1; } - if ( !(tmp = erealloc(ImageInfo->file.list[section_index].data, size)) && size) { + if (!(tmp = erealloc(ImageInfo->file.list[section_index].data, size)) && size) { EXIF_ERRLOG_EALLOC return -1; } @@ -1001,20 +1006,16 @@ int exif_file_sections_realloc(image_info_type *ImageInfo, int section_index, si /* {{{ exif_file_section_free Discard all file_sections in ImageInfo */ -int exif_file_sections_free(image_info_type *ImageInfo) +static int exif_file_sections_free(image_info_type *ImageInfo) { int i; - if ( ImageInfo->file.count) { + if (ImageInfo->file.count) { for (i=0; i<ImageInfo->file.count; i++) { - if (ImageInfo->file.list[i].data) { - efree(ImageInfo->file.list[i].data); - } + EFREE_IF(ImageInfo->file.list[i].data); } } - if (ImageInfo->file.list) { - efree(ImageInfo->file.list); - } + EFREE_IF(ImageInfo->file.list); ImageInfo->file.count = 0; return TRUE; } @@ -1023,7 +1024,7 @@ int exif_file_sections_free(image_info_type *ImageInfo) /* {{{ exif_iif_add_value Add a value to image_info */ -void exif_iif_add_value( image_info_type *image_info, int section_index, char *name, int tag, int format, int length, void* value, int motorola_intel) +static void exif_iif_add_value(image_info_type *image_info, int section_index, char *name, int tag, int format, int length, void* value, int motorola_intel) { int index; image_info_value *info_value; @@ -1031,7 +1032,7 @@ void exif_iif_add_value( image_info_type *image_info, int section_index, char *n image_info_data *list; list = erealloc(image_info->info_list[section_index].list, (image_info->info_list[section_index].count+1)*sizeof(image_info_data)); - if ( !list) { + if (!list) { EXIF_ERRLOG_EALLOC return; } @@ -1042,7 +1043,7 @@ void exif_iif_add_value( image_info_type *image_info, int section_index, char *n info_data->format = format; info_data->length = length; info_data->name = estrdup(name); - if ( !info_data->name) { + if (!info_data->name) { EXIF_ERRLOG_EALLOC return; } @@ -1050,7 +1051,7 @@ void exif_iif_add_value( image_info_type *image_info, int section_index, char *n switch (format) { case TAG_FMT_STRING: - if ( value) { + if (value) { length = php_strnlen(value, length); info_data->length = length; info_value->s = estrndup(value, length); @@ -1058,7 +1059,7 @@ void exif_iif_add_value( image_info_type *image_info, int section_index, char *n info_data->length = 0; info_value->s = estrdup(""); } - if ( !info_value->s) { + if (!info_value->s) { EXIF_ERRLOG_EALLOC info_data->length = 0; break; /* better return with "" instead of possible casing problems */ @@ -1075,27 +1076,25 @@ void exif_iif_add_value( image_info_type *image_info, int section_index, char *n case TAG_FMT_SBYTE: case TAG_FMT_BYTE: /* in contrast to strings bytes do not need to allocate buffer for NULL if length==0 */ - if ( length<1) + if (length<1) break; - if ( format==TAG_FMT_BYTE && length==1) - { + if (format==TAG_FMT_BYTE && length==1) { info_value->u = *(uchar*)value; break; } - if ( format==TAG_FMT_SBYTE && length==1) - { + if (format==TAG_FMT_SBYTE && length==1) { info_value->i = *(char*)value; info_data->length = 0; break; } case TAG_FMT_UNDEFINED: - if ( value) { + if (value) { info_value->s = estrndup(value, length); } else { info_data->length = 0; info_value->s = estrdup(""); } - if ( !info_value->s) { + if (!info_value->s) { EXIF_ERRLOG_EALLOC return; } @@ -1109,12 +1108,12 @@ void exif_iif_add_value( image_info_type *image_info, int section_index, char *n case TAG_FMT_SRATIONAL: case TAG_FMT_SINGLE: case TAG_FMT_DOUBLE: - if ( length==0) { + if (length==0) { break; } else - if ( length>1) { + if (length>1) { info_data->value.list = emalloc(length*sizeof(image_info_value)); - if ( !info_data->value.list) { + if (!info_data->value.list) { EXIF_ERRLOG_EALLOC return; } @@ -1122,7 +1121,7 @@ void exif_iif_add_value( image_info_type *image_info, int section_index, char *n info_value = &info_data->value; } for (index=0; index<length; index++) { - if ( length>1) { + if (length>1) { info_value = &info_data->value.list[index]; } switch (format) { @@ -1171,22 +1170,22 @@ void exif_iif_add_value( image_info_type *image_info, int section_index, char *n /* {{{ exif_iif_add_tag Add a tag from IFD to image_info */ -void exif_iif_add_tag( image_info_type *image_info, int section_index, char *name, int tag, int format, int length, void* value) +static void exif_iif_add_tag(image_info_type *image_info, int section_index, char *name, int tag, int format, int length, void* value) { - exif_iif_add_value( image_info, section_index, name, tag, format, length, value, image_info->motorola_intel); + exif_iif_add_value(image_info, section_index, name, tag, format, length, value, image_info->motorola_intel); } /* }}} */ /* {{{ exif_iif_add_int Add an int value to image_info */ -void exif_iif_add_int( image_info_type *image_info, int section_index, char *name, int value) +static void exif_iif_add_int(image_info_type *image_info, int section_index, char *name, int value) { image_info_data *info_data; image_info_data *list; list = erealloc(image_info->info_list[section_index].list, (image_info->info_list[section_index].count+1)*sizeof(image_info_data)); - if ( !list) { + if (!list) { EXIF_ERRLOG_EALLOC return; } @@ -1197,7 +1196,7 @@ void exif_iif_add_int( image_info_type *image_info, int section_index, char *nam info_data->format = TAG_FMT_SLONG; info_data->length = 1; info_data->name = estrdup(name); - if ( !info_data->name) { + if (!info_data->name) { EXIF_ERRLOG_EALLOC return; } @@ -1210,20 +1209,22 @@ void exif_iif_add_int( image_info_type *image_info, int section_index, char *nam /* {{{ exif_iif_add_str Add a string value to image_info MUST BE NUL TERMINATED */ -void exif_iif_add_str( image_info_type *image_info, int section_index, char *name, char *value, ...) +static void exif_iif_add_str(image_info_type *image_info, int section_index, char *name, char *value, ...) { image_info_data *info_data; image_info_data *list; char tmp[1024]; va_list arglist; - va_start( arglist, value ); - if ( value) vsnprintf( tmp, sizeof(tmp), value, arglist); - va_end( arglist); + va_start(arglist, value); + if (value) { + vsnprintf(tmp, sizeof(tmp), value, arglist); + } + va_end(arglist); - if ( value) { + if (value) { list = erealloc(image_info->info_list[section_index].list, (image_info->info_list[section_index].count+1)*sizeof(image_info_data)); - if ( !list) { + if (!list) { EXIF_ERRLOG_EALLOC return; } @@ -1233,12 +1234,12 @@ void exif_iif_add_str( image_info_type *image_info, int section_index, char *nam info_data->format = TAG_FMT_STRING; info_data->length = 1; info_data->name = estrdup(name); - if ( !info_data->name) { + if (!info_data->name) { EXIF_ERRLOG_EALLOC return; } info_data->value.s = estrdup(tmp); - if ( !info_data->value.s) { + if (!info_data->value.s) { EXIF_ERRLOG_EALLOC return; } @@ -1251,14 +1252,14 @@ void exif_iif_add_str( image_info_type *image_info, int section_index, char *nam /* {{{ exif_iif_add_str Add a string value to image_info MUST BE NUL TERMINATED */ -void exif_iif_add_buffer( image_info_type *image_info, int section_index, char *name, int length, char *value) +static void exif_iif_add_buffer(image_info_type *image_info, int section_index, char *name, int length, char *value) { image_info_data *info_data; image_info_data *list; - if ( value) { + if (value) { list = erealloc(image_info->info_list[section_index].list, (image_info->info_list[section_index].count+1)*sizeof(image_info_data)); - if ( !list) { + if (!list) { EXIF_ERRLOG_EALLOC return; } @@ -1268,12 +1269,12 @@ void exif_iif_add_buffer( image_info_type *image_info, int section_index, char * info_data->format = TAG_FMT_UNDEFINED; info_data->length = length; info_data->name = estrdup(name); - if ( !info_data->name) { + if (!info_data->name) { EXIF_ERRLOG_EALLOC return; } info_data->value.s = emalloc(length+1); - if ( !info_data->value.s) { + if (!info_data->value.s) { EXIF_ERRLOG_EALLOC return; } @@ -1288,13 +1289,13 @@ void exif_iif_add_buffer( image_info_type *image_info, int section_index, char * /* {{{ exif_iif_free Free memory allocated for image_info */ -void exif_iif_free( image_info_type *image_info, int section_index) { +static void exif_iif_free(image_info_type *image_info, int section_index) { int i; void *f; /* faster */ if (image_info->info_list[section_index].count) { for (i=0; i < image_info->info_list[section_index].count; i++) { - if ( (f=image_info->info_list[section_index].list[i].name) != NULL) { + if ((f=image_info->info_list[section_index].list[i].name) != NULL) { efree(f); } switch(image_info->info_list[section_index].list[i].format) { @@ -1306,7 +1307,7 @@ void exif_iif_free( image_info_type *image_info, int section_index) { default: case TAG_FMT_UNDEFINED: case TAG_FMT_STRING: - if ( (f=image_info->info_list[section_index].list[i].value.s) != NULL) { + if ((f=image_info->info_list[section_index].list[i].value.s) != NULL) { efree(f); } break; @@ -1321,7 +1322,7 @@ void exif_iif_free( image_info_type *image_info, int section_index) { case TAG_FMT_DOUBLE: /* nothing to do here */ if (image_info->info_list[section_index].list[i].length > 1) { - if ( (f=image_info->info_list[section_index].list[i].value.list) != NULL) { + if ((f=image_info->info_list[section_index].list[i].value.list) != NULL) { efree(f); } } @@ -1329,15 +1330,13 @@ void exif_iif_free( image_info_type *image_info, int section_index) { } } } - if (image_info->info_list[section_index].list) { - efree(image_info->info_list[section_index].list); - } + EFREE_IF(image_info->info_list[section_index].list); } /* }}} */ /* {{{ add_assoc_image_info * Add image_info to associative array value. */ -void add_assoc_image_info( pval *value, int sub_array, image_info_type *image_info, int section_index) +static void add_assoc_image_info(pval *value, int sub_array, image_info_type *image_info, int section_index) { char buffer[64], *val, *name, uname[64]; int i, ap, l, b, idx=0, done, unknown=0; @@ -1345,31 +1344,26 @@ void add_assoc_image_info( pval *value, int sub_array, image_info_type *image_in image_info_data *info_data; pval *tmpi, *array = NULL; - if ( image_info->info_list[section_index].count) - { - - if ( sub_array) { + if (image_info->info_list[section_index].count) { + if (sub_array) { MAKE_STD_ZVAL(tmpi); array_init(tmpi); } else { tmpi = value; } - for(i=0; i<image_info->info_list[section_index].count; i++) - { + for(i=0; i<image_info->info_list[section_index].count; i++) { done = 0; info_data = &image_info->info_list[section_index].list[i]; info_value = &info_data->value; - if ( !(name = info_data->name)) { + if (!(name = info_data->name)) { sprintf(uname, "%d", unknown++); name = uname; } - if (info_data->length==0) - { + if (info_data->length==0) { add_assoc_null(tmpi, name); } else { - switch (info_data->format) - { + switch (info_data->format) { default: /* Standard says more types possible but skip them... * but allow users to handle data if they know how to @@ -1377,7 +1371,7 @@ void add_assoc_image_info( pval *value, int sub_array, image_info_type *image_in * return; */ case TAG_FMT_UNDEFINED: - if ( !info_value->s) { + if (!info_value->s) { add_assoc_stringl(tmpi, name, "", 0, 1); } else { add_assoc_stringl(tmpi, name, info_value->s, info_data->length, 1); @@ -1385,7 +1379,9 @@ void add_assoc_image_info( pval *value, int sub_array, image_info_type *image_in break; case TAG_FMT_STRING: - if ( !(val = info_value->s)) val = ""; + if (!(val = info_value->s)) { + val = ""; + } if (section_index==SECTION_COMMENT) { add_index_string(tmpi, idx++, val, 1); } else { @@ -1404,23 +1400,20 @@ void add_assoc_image_info( pval *value, int sub_array, image_info_type *image_in case TAG_FMT_ULONG: case TAG_FMT_SLONG: /* now the rest, first see if it becomes an array */ - if ( (l = info_data->length) > 1) { + if ((l = info_data->length) > 1) { array = NULL; MAKE_STD_ZVAL(array); array_init(array); } - for(ap=0; ap<l; ap++) - { - if ( l>1) { + for(ap=0; ap<l; ap++) { + if (l>1) { info_value = &info_data->value.list[ap]; } - switch (info_data->format) - { + switch (info_data->format) { case TAG_FMT_BYTE: if (l>1) { info_value = &info_data->value; - for (b=0;b<l;b++) - { + for (b=0;b<l;b++) { add_index_long(array, b, (int)(info_value->s[b])); } break; @@ -1446,8 +1439,7 @@ void add_assoc_image_info( pval *value, int sub_array, image_info_type *image_in case TAG_FMT_SBYTE: if (l>1) { info_value = &info_data->value; - for (b=0;b<l;b++) - { + for (b=0;b<l;b++) { add_index_long(array, ap, (int)info_value->s[b]); } break; @@ -1488,14 +1480,14 @@ void add_assoc_image_info( pval *value, int sub_array, image_info_type *image_in } info_value = &info_data->value.list[ap]; } - if ( l>1) { + if (l>1) { add_assoc_zval(tmpi, name, array); } break; } } } - if ( sub_array) { + if (sub_array) { add_assoc_zval(value, exif_get_sectionname(section_index), tmpi); } } @@ -1613,7 +1605,7 @@ void add_assoc_image_info( pval *value, int sub_array, image_info_type *image_in */ static void exif_process_COM (image_info_type *image_info, uchar *value, int length) { - exif_iif_add_tag( image_info, SECTION_COMMENT, "Comment", TAG_COMPUTED_VALUE, TAG_FMT_STRING, length-2, value+2); + exif_iif_add_tag(image_info, SECTION_COMMENT, "Comment", TAG_COMPUTED_VALUE, TAG_FMT_STRING, length-2, value+2); } /* }}} */ @@ -1628,17 +1620,17 @@ static void exif_process_CME (image_info_type *image_info, uchar *value, int len if (length>3) { switch(value[2]) { case 0: - exif_iif_add_tag( image_info, SECTION_COMMENT, "Comment", TAG_COMPUTED_VALUE, TAG_FMT_UNDEFINED, length, value); + exif_iif_add_tag(image_info, SECTION_COMMENT, "Comment", TAG_COMPUTED_VALUE, TAG_FMT_UNDEFINED, length, value); break; case 1: - exif_iif_add_tag( image_info, SECTION_COMMENT, "Comment", TAG_COMPUTED_VALUE, TAG_FMT_STRING, length, value); + exif_iif_add_tag(image_info, SECTION_COMMENT, "Comment", TAG_COMPUTED_VALUE, TAG_FMT_STRING, length, value); break; default: php_error(E_NOTICE, "Undefined JPEG2000 comment encoding"); break; } } else { - exif_iif_add_tag( image_info, SECTION_COMMENT, "Comment", TAG_COMPUTED_VALUE, TAG_FMT_UNDEFINED, 0, NULL); + exif_iif_add_tag(image_info, SECTION_COMMENT, "Comment", TAG_COMPUTED_VALUE, TAG_FMT_UNDEFINED, 0, NULL); php_error(E_NOTICE, "JPEG2000 comment section to small"); } } @@ -1679,7 +1671,7 @@ static int exif_process_IFD_in_JPEG(image_info_type *ImageInfo, char *DirStart, /* {{{ exif_get_markername Get name of marker */ //#ifdef EXIF_DEBUG -char * exif_get_markername(int marker) +static char * exif_get_markername(int marker) { switch(marker) { case 0xC0: return "SOF0"; @@ -1745,7 +1737,7 @@ PHP_FUNCTION(exif_tagname) convert_to_long_ex(p_num); tag = Z_LVAL_PP(p_num); szTemp = exif_get_tagname(tag, NULL, 0); - if ( tag<0 || !szTemp || !szTemp[0]) { + if (tag<0 || !szTemp || !szTemp[0]) { RETURN_BOOL(FALSE); } else { RETURN_STRING(szTemp, 1) @@ -1755,7 +1747,7 @@ PHP_FUNCTION(exif_tagname) /* {{{ exif_ifd_make_value * Create a value for an ifd from an info_data pointer */ -static void* exif_ifd_make_value( image_info_data *info_data, int motorola_intel) { +static void* exif_ifd_make_value(image_info_data *info_data, int motorola_intel) { size_t byte_count; char *value_ptr, *data_ptr; int i; @@ -1764,18 +1756,18 @@ static void* exif_ifd_make_value( image_info_data *info_data, int motorola_intel byte_count = php_tiff_bytes_per_format[info_data->format] * info_data->length; value_ptr = emalloc(max(byte_count, 4)); - if ( !value_ptr) { + if (!value_ptr) { EXIF_ERRLOG_EALLOC return NULL; } memset(value_ptr, 0, 4); - if ( !info_data->length) { + if (!info_data->length) { return value_ptr; } - if ( info_data->format == TAG_FMT_UNDEFINED || info_data->format == TAG_FMT_STRING - || ( byte_count>1 && (info_data->format == TAG_FMT_BYTE || info_data->format == TAG_FMT_SBYTE))) - { - memmove( value_ptr, info_data->value.s, byte_count); + if (info_data->format == TAG_FMT_UNDEFINED || info_data->format == TAG_FMT_STRING + || (byte_count>1 && (info_data->format == TAG_FMT_BYTE || info_data->format == TAG_FMT_SBYTE)) + ) { + memmove(value_ptr, info_data->value.s, byte_count); return value_ptr; } else if (info_data->format == TAG_FMT_BYTE) { *value_ptr = info_data->value.u; @@ -1786,44 +1778,44 @@ static void* exif_ifd_make_value( image_info_data *info_data, int motorola_intel } else { data_ptr = value_ptr; for(i=0; i<info_data->length; i++) { - if ( info_data->length==1) { + if (info_data->length==1) { info_value = &info_data->value; } else { info_value = &info_data->value.list[i]; } - switch( info_data->format) { + switch(info_data->format) { case TAG_FMT_USHORT: - php_ifd_set16u( data_ptr, info_value->u, motorola_intel); + php_ifd_set16u(data_ptr, info_value->u, motorola_intel); data_ptr += 2; break; case TAG_FMT_ULONG: - php_ifd_set32u( data_ptr, info_value->u, motorola_intel); + php_ifd_set32u(data_ptr, info_value->u, motorola_intel); data_ptr += 4; break; case TAG_FMT_SSHORT: - php_ifd_set16u( data_ptr, info_value->i, motorola_intel); + php_ifd_set16u(data_ptr, info_value->i, motorola_intel); data_ptr += 2; break; case TAG_FMT_SLONG: - php_ifd_set32u( data_ptr, info_value->i, motorola_intel); + php_ifd_set32u(data_ptr, info_value->i, motorola_intel); data_ptr += 4; break; case TAG_FMT_URATIONAL: - php_ifd_set32u( data_ptr, info_value->sr.num, motorola_intel); - php_ifd_set32u( data_ptr+4, info_value->sr.den, motorola_intel); + php_ifd_set32u(data_ptr, info_value->sr.num, motorola_intel); + php_ifd_set32u(data_ptr+4, info_value->sr.den, motorola_intel); data_ptr += 8; break; case TAG_FMT_SRATIONAL: - php_ifd_set32u( data_ptr, info_value->ur.num, motorola_intel); - php_ifd_set32u( data_ptr+4, info_value->ur.den, motorola_intel); + php_ifd_set32u(data_ptr, info_value->ur.num, motorola_intel); + php_ifd_set32u(data_ptr+4, info_value->ur.den, motorola_intel); data_ptr += 8; break; case TAG_FMT_SINGLE: - memmove( data_ptr, &info_data->value.f, byte_count); + memmove(data_ptr, &info_data->value.f, byte_count); data_ptr += 4; break; case TAG_FMT_DOUBLE: - memmove( data_ptr, &info_data->value.d, byte_count); + memmove(data_ptr, &info_data->value.d, byte_count); data_ptr += 8; break; } @@ -1846,8 +1838,7 @@ static void exif_thumbnail_build(image_info_type *ImageInfo) { char tagname[64]; #endif - if ( !ImageInfo->read_thumbnail || !ImageInfo->Thumbnail.offset || !ImageInfo->Thumbnail.size) - { + if (!ImageInfo->read_thumbnail || !ImageInfo->Thumbnail.offset || !ImageInfo->Thumbnail.size) { return; /* ignore this call */ } switch(ImageInfo->Thumbnail.filetype) { @@ -1866,7 +1857,7 @@ static void exif_thumbnail_build(image_info_type *ImageInfo) { for (i=0; i<info_list->count; i++) { info_data = &info_list->list[i]; byte_count = php_tiff_bytes_per_format[info_data->format] * info_data->length; - if ( byte_count > 4) { + if (byte_count > 4) { new_size += byte_count; } } @@ -1883,13 +1874,13 @@ static void exif_thumbnail_build(image_info_type *ImageInfo) { memmove(ImageInfo->Thumbnail.data + new_move, ImageInfo->Thumbnail.data, ImageInfo->Thumbnail.size); ImageInfo->Thumbnail.size += new_size; /* fill in data */ - if ( ImageInfo->motorola_intel) { - memmove( new_data, "MM\x00\x2a\x00\x00\x00\x08", 8); + if (ImageInfo->motorola_intel) { + memmove(new_data, "MM\x00\x2a\x00\x00\x00\x08", 8); } else { - memmove( new_data, "II\x2a\x00\x08\x00\x00\x00", 8); + memmove(new_data, "II\x2a\x00\x08\x00\x00\x00", 8); } new_data += 8; - php_ifd_set16u( new_data, info_list->count, ImageInfo->motorola_intel); + php_ifd_set16u(new_data, info_list->count, ImageInfo->motorola_intel); new_data += 2; for (i=0; i<info_list->count; i++) { info_data = &info_list->list[i]; @@ -1897,38 +1888,38 @@ static void exif_thumbnail_build(image_info_type *ImageInfo) { #ifdef EXIF_DEBUG php_error(E_NOTICE, "thumbnail: process tag(x%04X=%s): %s%s (%d bytes)", info_data->tag, exif_get_tagname(info_data->tag, tagname, -12), (info_data->length>1)&&info_data->format!=TAG_FMT_UNDEFINED&&info_data->format!=TAG_FMT_STRING?"ARRAY OF ":"", exif_get_tagformat(info_data->format), byte_count); #endif - if ( info_data->tag==TAG_STRIP_OFFSETS || info_data->tag==TAG_JPEG_INTERCHANGE_FORMAT) { - php_ifd_set16u( new_data + 0, info_data->tag, ImageInfo->motorola_intel); - php_ifd_set16u( new_data + 2, TAG_FMT_ULONG, ImageInfo->motorola_intel); - php_ifd_set32u( new_data + 4, 1, ImageInfo->motorola_intel); - php_ifd_set32u( new_data + 8, new_move, ImageInfo->motorola_intel); + if (info_data->tag==TAG_STRIP_OFFSETS || info_data->tag==TAG_JPEG_INTERCHANGE_FORMAT) { + php_ifd_set16u(new_data + 0, info_data->tag, ImageInfo->motorola_intel); + php_ifd_set16u(new_data + 2, TAG_FMT_ULONG, ImageInfo->motorola_intel); + php_ifd_set32u(new_data + 4, 1, ImageInfo->motorola_intel); + php_ifd_set32u(new_data + 8, new_move, ImageInfo->motorola_intel); } else { - php_ifd_set16u( new_data + 0, info_data->tag, ImageInfo->motorola_intel); - php_ifd_set16u( new_data + 2, info_data->format, ImageInfo->motorola_intel); - php_ifd_set32u( new_data + 4, info_data->length, ImageInfo->motorola_intel); - value_ptr = exif_ifd_make_value( info_data, ImageInfo->motorola_intel); - if ( !value_ptr) { + php_ifd_set16u(new_data + 0, info_data->tag, ImageInfo->motorola_intel); + php_ifd_set16u(new_data + 2, info_data->format, ImageInfo->motorola_intel); + php_ifd_set32u(new_data + 4, info_data->length, ImageInfo->motorola_intel); + value_ptr = exif_ifd_make_value(info_data, ImageInfo->motorola_intel); + if (!value_ptr) { EXIF_ERRLOG_EALLOC efree(ImageInfo->Thumbnail.data); ImageInfo->Thumbnail.data = NULL; ImageInfo->Thumbnail.size = 0; return; } - if ( byte_count <= 4) { - memmove( new_data+8, value_ptr, 4); + if (byte_count <= 4) { + memmove(new_data+8, value_ptr, 4); } else { - php_ifd_set32u( new_data+8, new_value, ImageInfo->motorola_intel); + php_ifd_set32u(new_data+8, new_value, ImageInfo->motorola_intel); #ifdef EXIF_DEBUG php_error(E_NOTICE, "thumbnail: writing with value offset: 0x%04X + 0x%02X", new_value, byte_count); #endif - memmove( ImageInfo->Thumbnail.data+new_value, value_ptr, byte_count); + memmove(ImageInfo->Thumbnail.data+new_value, value_ptr, byte_count); new_value += byte_count; } efree(value_ptr); } new_data += 12; } - memset( new_data, 0, 4); /* next ifd pointer */ + memset(new_data, 0, 4); /* next ifd pointer */ #ifdef EXIF_DEBUG php_error(E_NOTICE, "thumbnail: created"); #endif @@ -1941,19 +1932,18 @@ static void exif_thumbnail_build(image_info_type *ImageInfo) { * Grab the thumbnail, corrected */ static void exif_thumbnail_extract(image_info_type *ImageInfo, char *offset, size_t length) { /* according to exif2.1, the thumbnail is not supposed to be greater than 64K */ - if ( !ImageInfo->read_thumbnail) - { + if (!ImageInfo->read_thumbnail) { return; /* ignore this call */ } if (ImageInfo->Thumbnail.size >= 65536 || ImageInfo->Thumbnail.size <= 0 - || ImageInfo->Thumbnail.offset <= 0) - { + || ImageInfo->Thumbnail.offset <= 0 + ) { php_error(E_WARNING, "Illegal thumbnail size/offset"); return; } /* Check to make sure we are not going to go past the ExifLength */ - if ( (ImageInfo->Thumbnail.offset + ImageInfo->Thumbnail.size) > length) { + if ((ImageInfo->Thumbnail.offset + ImageInfo->Thumbnail.size) > length) { EXIF_ERRLOG_THUMBEOF return; } @@ -1961,7 +1951,7 @@ static void exif_thumbnail_extract(image_info_type *ImageInfo, char *offset, siz if (!ImageInfo->Thumbnail.data) { EXIF_ERRLOG_EALLOC } - exif_thumbnail_build( ImageInfo); + exif_thumbnail_build(ImageInfo); } /* }}} */ @@ -1975,7 +1965,7 @@ static int exif_process_undefined(char **result, char *value, size_t byte_count) */ if (byte_count) { (*result) = estrndup(value, byte_count); /* NULL @ byte_count!!! */ - if ( !*result) { + if (!*result) { EXIF_ERRLOG_EALLOC return 0; } @@ -2019,7 +2009,7 @@ static int exif_process_string(char **result, char *value, size_t byte_count) { return exif_process_undefined(result, value, byte_count); } (*result) = estrndup("", 1); /* force empty string */ - if ( !*result) { + if (!*result) { EXIF_ERRLOG_EALLOC return 0; } @@ -2039,13 +2029,13 @@ static int exif_process_user_comment(char **pszInfoPtr, char **pszEncoding, char *pszEncoding = NULL; /* Copy the comment */ - if ( ByteCount>=8) { + if (ByteCount>=8) { if (!memcmp(szValuePtr, "UNICODE\0", 8)) { *pszEncoding = estrdup((const char*)szValuePtr); szValuePtr = szValuePtr+8; ByteCount -= 8; #ifdef HAVE_MBSTRING - if ( motorola_intel) { + if (motorola_intel) { *pszInfoPtr = php_mb_convert_encoding(szValuePtr, ByteCount, exif_encoding_unicode, "UCS-2BE", &len TSRMLS_CC); } else { *pszInfoPtr = php_mb_convert_encoding(szValuePtr, ByteCount, exif_encoding_unicode, "UCS-2LE", &len TSRMLS_CC); @@ -2056,12 +2046,12 @@ static int exif_process_user_comment(char **pszInfoPtr, char **pszEncoding, char return exif_process_string_raw(pszInfoPtr, szValuePtr, ByteCount); #endif } else - if ( !memcmp(szValuePtr, "ASCII\0\0\0", 8)) { + if (!memcmp(szValuePtr, "ASCII\0\0\0", 8)) { *pszEncoding = estrdup((const char*)szValuePtr); szValuePtr = szValuePtr+8; ByteCount -= 8; } else - if ( !memcmp(szValuePtr, "JIS\0\0\0\0\0", 8)) { + if (!memcmp(szValuePtr, "JIS\0\0\0\0\0", 8)) { /* JIS should be tanslated to MB or we leave it to the user - leave it to the user */ *pszEncoding = estrdup((const char*)szValuePtr); szValuePtr = szValuePtr+8; @@ -2073,7 +2063,7 @@ static int exif_process_user_comment(char **pszInfoPtr, char **pszEncoding, char return exif_process_string_raw(pszInfoPtr, szValuePtr, ByteCount); #endif } else - if ( !memcmp(szValuePtr, "\0\0\0\0\0\0\0\0", 8)) { + if (!memcmp(szValuePtr, "\0\0\0\0\0\0\0\0", 8)) { /* 8 NULL means undefined and should be ASCII... */ *pszEncoding = estrdup("UNDEFINED"); szValuePtr = szValuePtr+8; @@ -2082,7 +2072,11 @@ static int exif_process_user_comment(char **pszInfoPtr, char **pszEncoding, char } /* Olympus has this padded with trailing spaces. Remove these first. */ - if (ByteCount>0) for (a=ByteCount-1;a && szValuePtr[a]==' ';a--) (szValuePtr)[a] = '\0'; + if (ByteCount>0) { + for (a=ByteCount-1;a && szValuePtr[a]==' ';a--) { + (szValuePtr)[a] = '\0'; + } + } /* normal text without encoding */ exif_process_string(pszInfoPtr, szValuePtr, ByteCount); @@ -2131,10 +2125,10 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha } return TRUE; } - if ( byte_count>sizeof(cbuf)) { + if (byte_count>sizeof(cbuf)) { // mark as outside range and get buffer value_ptr = emalloc(byte_count); - if ( !value_ptr) { + if (!value_ptr) { EXIF_ERRLOG_EALLOC return FALSE; } @@ -2151,15 +2145,15 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha fpos = php_stream_tell(ImageInfo->infile); php_stream_seek(ImageInfo->infile, offset_val, SEEK_SET); fgot = php_stream_tell(ImageInfo->infile); - if ( fgot!=offset_val) { - if ( outside) efree( outside); + if (fgot!=offset_val) { + EFREE_IF(outside); php_error(E_WARNING, "Wrong file pointer: 0x%08X != 0x08X", fgot, offset_val); return FALSE; } fgot = php_stream_read(ImageInfo->infile, value_ptr, byte_count); php_stream_seek(ImageInfo->infile, fpos, SEEK_SET); - if ( fgot<byte_count) { - if ( outside) efree( outside); + if (fgot<byte_count) { + EFREE_IF(outside); EXIF_ERRLOG_FILEEOF return FALSE; } @@ -2193,7 +2187,7 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha break; case TAG_STRIP_BYTE_COUNTS: - if ( ImageInfo->FileType == IMAGE_FILETYPE_TIFF_II || ImageInfo->FileType == IMAGE_FILETYPE_TIFF_MM) { + if (ImageInfo->FileType == IMAGE_FILETYPE_TIFF_II || ImageInfo->FileType == IMAGE_FILETYPE_TIFF_MM) { ImageInfo->Thumbnail.filetype = ImageInfo->FileType; } else { /* motorola is easier to read */ @@ -2203,7 +2197,7 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha break; case TAG_JPEG_INTERCHANGE_FORMAT_LEN: - if ( ImageInfo->Thumbnail.filetype == IMAGE_FILETYPE_UNKNOWN) { + if (ImageInfo->Thumbnail.filetype == IMAGE_FILETYPE_UNKNOWN) { ImageInfo->Thumbnail.filetype = IMAGE_FILETYPE_JPEG; ImageInfo->Thumbnail.size = exif_convert_any_to_int(value_ptr, format, ImageInfo->motorola_intel); } @@ -2215,15 +2209,15 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha case TAG_COPYRIGHT: /* check for "<photographer> NUL <editor> NUL" */ if (byte_count>1 && (l=php_strnlen(value_ptr, byte_count)) > 0) { - if ( l<byte_count-1) { + if (l<byte_count-1) { /* When there are any characters after the first NUL */ ImageInfo->CopyrightPhotographer = estrdup(value_ptr); ImageInfo->CopyrightEditor = estrdup(value_ptr+l+1); ImageInfo->Copyright = emalloc(strlen(value_ptr)+strlen(value_ptr+l+1)+3); - if ( !ImageInfo->Copyright) { + if (!ImageInfo->Copyright) { EXIF_ERRLOG_EALLOC } else { - sprintf( ImageInfo->Copyright, "%s, %s", value_ptr, value_ptr+l+1); + sprintf(ImageInfo->Copyright, "%s, %s", value_ptr, value_ptr+l+1); } /* format = TAG_FMT_UNDEFINED; this musn't be ASCII */ /* but we are not supposed to change this */ @@ -2248,7 +2242,7 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha case TAG_MAXAPERTURE: /* More relevant info always comes earlier, so only use this field if we don't have appropriate aperture information yet. */ - if ( ImageInfo->ApertureFNumber == 0) { + if (ImageInfo->ApertureFNumber == 0) { ImageInfo->ApertureFNumber = (float)exp(exif_convert_any_format(value_ptr, format, ImageInfo->motorola_intel)*log(2)*0.5); } @@ -2301,7 +2295,7 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha case TAG_EXIF_IFD_POINTER: case TAG_GPS_IFD_POINTER: case TAG_INTEROP_IFD_POINTER: - if ( ReadNextIFD) { + if (ReadNextIFD) { char *SubdirStart; int sub_section_index = 0; switch(tag) { @@ -2339,8 +2333,8 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha } } } - exif_iif_add_tag( ImageInfo, section_index, exif_get_tagname(tag, tagname, sizeof(tagname)), tag, format, components, value_ptr); - if ( outside) efree( outside); + exif_iif_add_tag(ImageInfo, section_index, exif_get_tagname(tag, tagname, sizeof(tagname)), tag, format, components, value_ptr); + EFREE_IF(outside); return TRUE; } /* }}} */ @@ -2387,16 +2381,15 @@ static int exif_process_IFD_in_JPEG(image_info_type *ImageInfo, char *DirStart, #ifdef EXIF_DEBUG php_error(E_NOTICE, "expect next IFD to be thumbnail"); #endif - if (exif_process_IFD_in_JPEG(ImageInfo, OffsetBase + NextDirOffset, OffsetBase, IFDlength, SECTION_THUMBNAIL TSRMLS_CC)) - { + if (exif_process_IFD_in_JPEG(ImageInfo, OffsetBase + NextDirOffset, OffsetBase, IFDlength, SECTION_THUMBNAIL TSRMLS_CC)) { #ifdef EXIF_DEBUG php_error(E_NOTICE, "thumbnail size: 0x%04X", ImageInfo->Thumbnail.size); #endif - if ( ImageInfo->Thumbnail.filetype != IMAGE_FILETYPE_UNKNOWN - && ImageInfo->Thumbnail.size - && ImageInfo->Thumbnail.offset - && ImageInfo->read_thumbnail) - { + if (ImageInfo->Thumbnail.filetype != IMAGE_FILETYPE_UNKNOWN + && ImageInfo->Thumbnail.size + && ImageInfo->Thumbnail.offset + && ImageInfo->read_thumbnail + ) { exif_thumbnail_extract(ImageInfo, OffsetBase, IFDlength); } return TRUE; @@ -2425,7 +2418,8 @@ static void exif_process_TIFF_in_JPEG(image_info_type *ImageInfo, char *CharBuf, /* Check the next two values for correctness. */ if (php_ifd_get16u(CharBuf+2, ImageInfo->motorola_intel) != 0x2a - || php_ifd_get32u(CharBuf+4, ImageInfo->motorola_intel) != 0x08) { + || php_ifd_get32u(CharBuf+4, ImageInfo->motorola_intel) != 0x08 + ) { php_error(E_WARNING, "Invalid TIFF start (1)"); return; } @@ -2471,11 +2465,11 @@ static void exif_process_APP12(image_info_type *ImageInfo, char *buffer, unsigne { int l1, l2=0; - if ( (l1 = php_strnlen(buffer+2, length-2)) > 0) { - exif_iif_add_tag( ImageInfo, SECTION_APP12, "Company", TAG_NONE, TAG_FMT_STRING, l1, buffer+2); - if ( length > 2+l1+1) { + if ((l1 = php_strnlen(buffer+2, length-2)) > 0) { + exif_iif_add_tag(ImageInfo, SECTION_APP12, "Company", TAG_NONE, TAG_FMT_STRING, l1, buffer+2); + if (length > 2+l1+1) { l2 = php_strnlen(buffer+2+l1+1, length-2-l1+1); - exif_iif_add_tag( ImageInfo, SECTION_APP12, "Info", TAG_NONE, TAG_FMT_STRING, l2, buffer+2+l1+1); + exif_iif_add_tag(ImageInfo, SECTION_APP12, "Info", TAG_NONE, TAG_FMT_STRING, l2, buffer+2+l1+1); } } #ifdef EXIF_DEBUG @@ -2495,8 +2489,7 @@ static int exif_scan_JPEG_header(image_info_type *ImageInfo TSRMLS_DC) size_t fpos, size, got, itemlen; jpeg_sof_info sof_info; - for(section=0;;section++) - { + for(section=0;;section++) { #ifdef EXIF_DEBUG fpos = php_stream_tell(ImageInfo->infile); php_error(E_NOTICE, "needing section %d @ 0x%08X", ImageInfo->file.count, fpos); @@ -2505,17 +2498,16 @@ static int exif_scan_JPEG_header(image_info_type *ImageInfo TSRMLS_DC) /* get marker byte, swallowing possible padding */ /* some software does not count the length bytes of COM section */ /* one company doing so is very much envolved in JPEG... so we accept too */ - if (last_marker==M_COM && comment_correction) comment_correction = 2; + if (last_marker==M_COM && comment_correction) { + comment_correction = 2; + } do { - if ((marker = php_stream_getc(ImageInfo->infile)) == EOF) - { + if ((marker = php_stream_getc(ImageInfo->infile)) == EOF) { EXIF_ERRLOG_CORRUPT return FALSE; } - if (last_marker==M_COM && comment_correction>0) - { - if ( marker!=0xFF) - { + if (last_marker==M_COM && comment_correction>0) { + if (marker!=0xFF) { marker = 0xff; comment_correction--; } else { @@ -2549,7 +2541,7 @@ static int exif_scan_JPEG_header(image_info_type *ImageInfo TSRMLS_DC) return FALSE; } - if ( (sn=exif_file_sections_add(ImageInfo, marker, itemlen+1, NULL))==-1) { + if ((sn=exif_file_sections_add(ImageInfo, marker, itemlen+1, NULL))==-1) { EXIF_ERRLOG_EALLOC return FALSE; } @@ -2575,8 +2567,7 @@ static int exif_scan_JPEG_header(image_info_type *ImageInfo TSRMLS_DC) /* Determine how much file is left. */ fpos = php_stream_tell(ImageInfo->infile); size = ImageInfo->FileSize - fpos; - if ( (sn=exif_file_sections_add(ImageInfo, M_PSEUDO, size, NULL))==-1) - { + if ((sn=exif_file_sections_add(ImageInfo, M_PSEUDO, size, NULL))==-1) { EXIF_ERRLOG_EALLOC return FALSE; } @@ -2598,7 +2589,7 @@ static int exif_scan_JPEG_header(image_info_type *ImageInfo TSRMLS_DC) break; case M_EXIF: - if ( !(ImageInfo->sections_found&FOUND_IFD0)) { + if (!(ImageInfo->sections_found&FOUND_IFD0)) { /*ImageInfo->sections_found |= FOUND_EXIF;*/ /* Seen files from some 'U-lead' software with Vivitar scanner that uses marker 31 later in the file (no clue what for!) */ @@ -2657,34 +2648,38 @@ static int exif_scan_thumbnail(image_info_type *ImageInfo) size_t length=2, pos=0; jpeg_sof_info sof_info; - if ( !data) - { + if (!data) { return FALSE; /* nothing to do here */ } - if ( memcmp(data, "\xFF\xD8\xFF", 3)) - { - if ( !ImageInfo->Thumbnail.width && !ImageInfo->Thumbnail.height) - { + if (memcmp(data, "\xFF\xD8\xFF", 3)) { + if (!ImageInfo->Thumbnail.width && !ImageInfo->Thumbnail.height) { php_error(E_WARNING, "Thumbnail is not a jpeg image"); } return FALSE; } for (;;) { pos += length; - if ( pos>=ImageInfo->Thumbnail.size) return FALSE; + if (pos>=ImageInfo->Thumbnail.size) + return FALSE; c = data[pos++]; - if ( pos>=ImageInfo->Thumbnail.size) return FALSE; - if ( c != 0xFF) return FALSE; + if (pos>=ImageInfo->Thumbnail.size) + return FALSE; + if (c != 0xFF) { + return FALSE; + } n = 8; - while ( (c = data[pos++]) == 0xFF && n--) - { - if ( pos+3>=ImageInfo->Thumbnail.size) return FALSE; + while ((c = data[pos++]) == 0xFF && n--) { + if (pos+3>=ImageInfo->Thumbnail.size) + return FALSE; /* +3 = pos++ of next check when reaching marker + 2 bytes for length */ } - if ( c == 0xFF) return FALSE; + if (c == 0xFF) + return FALSE; marker = c; length = php_jpg_get16(data+pos); - if ( pos+length>=ImageInfo->Thumbnail.size) return FALSE; + if (pos+length>=ImageInfo->Thumbnail.size) { + return FALSE; + } #ifdef EXIF_DEBUG php_error(E_NOTICE, "Thumnail: process section(x%02X=%s) @ x%04X + x%04X", marker, exif_get_markername(marker), pos, length); #endif @@ -2737,8 +2732,8 @@ static int exif_process_IFD_in_TIFF(image_info_type *ImageInfo, size_t dir_offse size_t ifd_size, dir_size, entry_offset, next_offset, entry_length, entry_value=0, fgot; int entry_tag , entry_type; - if ( ImageInfo->FileSize >= dir_offset+2) { - if ( (sn=exif_file_sections_add(ImageInfo, M_PSEUDO, 2, NULL))==-1) { + if (ImageInfo->FileSize >= dir_offset+2) { + if ((sn=exif_file_sections_add(ImageInfo, M_PSEUDO, 2, NULL))==-1) { EXIF_ERRLOG_EALLOC return FALSE; } @@ -2749,11 +2744,11 @@ static int exif_process_IFD_in_TIFF(image_info_type *ImageInfo, size_t dir_offse php_stream_read(ImageInfo->infile, ImageInfo->file.list[sn].data, 2); num_entries = php_ifd_get16u(ImageInfo->file.list[sn].data, ImageInfo->motorola_intel); dir_size = 2/*num dir entries*/ +12/*length of entry*/*num_entries +4/* offset to next ifd (points to thumbnail or NULL)*/; - if ( ImageInfo->FileSize >= dir_offset+dir_size) { + if (ImageInfo->FileSize >= dir_offset+dir_size) { #ifdef EXIF_DEBUG php_error(E_NOTICE, "Read from TIFF: filesize(x%04X), IFD dir(x%04X + x%04X), IFD entries(%d)", ImageInfo->FileSize, dir_offset+2, dir_size-2, num_entries); #endif - if ( exif_file_sections_realloc(ImageInfo, sn, dir_size)) { + if (exif_file_sections_realloc(ImageInfo, sn, dir_size)) { return FALSE; } php_stream_read(ImageInfo->infile, ImageInfo->file.list[sn].data+2, dir_size-2); @@ -2768,12 +2763,12 @@ static int exif_process_IFD_in_TIFF(image_info_type *ImageInfo, size_t dir_offse dir_entry = ImageInfo->file.list[sn].data+2+i*12; entry_tag = php_ifd_get16u(dir_entry+0, ImageInfo->motorola_intel); entry_type = php_ifd_get16u(dir_entry+2, ImageInfo->motorola_intel); - if ( entry_type > NUM_FORMATS) { + if (entry_type > NUM_FORMATS) { php_error(E_WARNING, "Error in TIFF: Illegal format, suppose bytes"); entry_type = TAG_FMT_BYTE; } entry_length = php_ifd_get32u(dir_entry+4, ImageInfo->motorola_intel) * php_tiff_bytes_per_format[entry_type]; - if ( entry_length <= 4) { + if (entry_length <= 4) { switch(entry_type) { case TAG_FMT_USHORT: entry_value = php_ifd_get16u(dir_entry+8, ImageInfo->motorola_intel); @@ -2818,9 +2813,8 @@ static int exif_process_IFD_in_TIFF(image_info_type *ImageInfo, size_t dir_offse entry_offset = php_ifd_get32u(dir_entry+8, ImageInfo->motorola_intel); /* if entry needs expading ifd cache and entry is at end of current ifd cache. */ /* otherwise there may be huge holes between two entries */ - if ( entry_offset + entry_length > dir_offset + ifd_size - && entry_offset == dir_offset + ifd_size) - { + if (entry_offset + entry_length > dir_offset + ifd_size + && entry_offset == dir_offset + ifd_size) { ifd_size = entry_offset + entry_length - dir_offset; #ifdef EXIF_DEBUG php_error(E_NOTICE, "Correcting: 0x%08X + 0x%08X - 0x%08X", entry_offset, entry_length, dir_offset); @@ -2828,13 +2822,13 @@ static int exif_process_IFD_in_TIFF(image_info_type *ImageInfo, size_t dir_offse } } } - if ( ImageInfo->FileSize >= dir_offset + ImageInfo->file.list[sn].size) { - if ( ifd_size > dir_size) { - if ( dir_offset + ifd_size > ImageInfo->FileSize) { + if (ImageInfo->FileSize >= dir_offset + ImageInfo->file.list[sn].size) { + if (ifd_size > dir_size) { + if (dir_offset + ifd_size > ImageInfo->FileSize) { php_error(E_WARNING, "Error in TIFF: filesize(x%04X) less than size of IFD(x%04X + x%04X)", ImageInfo->FileSize, dir_offset, ifd_size); return FALSE; } - if ( exif_file_sections_realloc(ImageInfo, sn, ifd_size)) { + if (exif_file_sections_realloc(ImageInfo, sn, ifd_size)) { return FALSE; } /* read values not stored in directory itself */ @@ -2855,8 +2849,7 @@ static int exif_process_IFD_in_TIFF(image_info_type *ImageInfo, size_t dir_offse if (entry_tag == TAG_EXIF_IFD_POINTER || entry_tag == TAG_INTEROP_IFD_POINTER || entry_tag == TAG_GPS_IFD_POINTER - ) - { + ) { switch(entry_tag) { case TAG_EXIF_IFD_POINTER: ImageInfo->sections_found |= FOUND_EXIF; @@ -2904,11 +2897,10 @@ static int exif_process_IFD_in_TIFF(image_info_type *ImageInfo, size_t dir_offse } else { php_stream_seek(ImageInfo->infile, ImageInfo->Thumbnail.offset, SEEK_SET); fgot = php_stream_read(ImageInfo->infile, ImageInfo->Thumbnail.data, ImageInfo->Thumbnail.size); - if ( fgot < ImageInfo->Thumbnail.size) - { + if (fgot < ImageInfo->Thumbnail.size) { EXIF_ERRLOG_THUMBEOF } - exif_thumbnail_build( ImageInfo); + exif_thumbnail_build(ImageInfo); } } #ifdef EXIF_DEBUG @@ -2940,20 +2932,19 @@ static int exif_scan_FILE_header(image_info_type *ImageInfo TSRMLS_DC) ImageInfo->FileType = IMAGE_FILETYPE_UNKNOWN; - if ( ImageInfo->FileSize >= 2) { + if (ImageInfo->FileSize >= 2) { php_stream_seek(ImageInfo->infile, 0, SEEK_SET); php_stream_read(ImageInfo->infile, file_header, 2); - if ( (file_header[0]==0xff) && (file_header[1]==M_SOI)) { + if ((file_header[0]==0xff) && (file_header[1]==M_SOI)) { ImageInfo->FileType = IMAGE_FILETYPE_JPEG; if (exif_scan_JPEG_header(ImageInfo TSRMLS_CC)) { ret = TRUE; } else { php_error(E_WARNING, "Invalid JPEG file: '%s'", ImageInfo->FileName); } - } else if ( ImageInfo->FileSize >= 8) { + } else if (ImageInfo->FileSize >= 8) { php_stream_read(ImageInfo->infile, file_header+2, 6); - if ( !memcmp(file_header, "II\x2A\x00", 4)) - { + if (!memcmp(file_header, "II\x2A\x00", 4)) { ImageInfo->FileType = IMAGE_FILETYPE_TIFF_II; ImageInfo->motorola_intel = 0; #ifdef EXIF_DEBUG @@ -2969,8 +2960,7 @@ static int exif_scan_FILE_header(image_info_type *ImageInfo TSRMLS_DC) } } else - if ( !memcmp(file_header, "MM\x00\x2a", 4)) - { + if (!memcmp(file_header, "MM\x00\x2a", 4)) { ImageInfo->FileType = IMAGE_FILETYPE_TIFF_MM; ImageInfo->motorola_intel = 1; #ifdef EXIF_DEBUG @@ -2999,19 +2989,19 @@ static int exif_scan_FILE_header(image_info_type *ImageInfo TSRMLS_DC) /* {{{ exif_discard_imageinfo Discard data scanned by exif_read_file. */ -int exif_discard_imageinfo(image_info_type *ImageInfo) +static int exif_discard_imageinfo(image_info_type *ImageInfo) { int i; - if (ImageInfo->FileName) efree(ImageInfo->FileName); - if (ImageInfo->UserComment) efree(ImageInfo->UserComment); - if (ImageInfo->UserCommentEncoding) efree(ImageInfo->UserCommentEncoding); - if (ImageInfo->Copyright) efree(ImageInfo->Copyright); - if (ImageInfo->CopyrightPhotographer) efree(ImageInfo->CopyrightPhotographer); - if (ImageInfo->CopyrightEditor) efree(ImageInfo->CopyrightEditor); - if (ImageInfo->Thumbnail.data) efree(ImageInfo->Thumbnail.data); + EFREE_IF(ImageInfo->FileName); + EFREE_IF(ImageInfo->UserComment); + EFREE_IF(ImageInfo->UserCommentEncoding); + EFREE_IF(ImageInfo->Copyright); + EFREE_IF(ImageInfo->CopyrightPhotographer); + EFREE_IF(ImageInfo->CopyrightEditor); + EFREE_IF(ImageInfo->Thumbnail.data); for (i=0; i<SECTION_COUNT; i++) { - exif_iif_free( ImageInfo, i); + exif_iif_free(ImageInfo, i); } exif_file_sections_free(ImageInfo); memset(ImageInfo, 0, sizeof(*ImageInfo)); @@ -3021,7 +3011,7 @@ int exif_discard_imageinfo(image_info_type *ImageInfo) /* {{{ exif_read_file */ -int exif_read_file(image_info_type *ImageInfo, char *FileName, int read_thumbnail, int read_all TSRMLS_DC) +static int exif_read_file(image_info_type *ImageInfo, char *FileName, int read_thumbnail, int read_all TSRMLS_DC) { int ret; struct stat st; @@ -3042,7 +3032,7 @@ int exif_read_file(image_info_type *ImageInfo, char *FileName, int read_thumbnai ImageInfo->read_all = read_all; ImageInfo->Thumbnail.filetype = IMAGE_FILETYPE_UNKNOWN; - if ( php_stream_is(ImageInfo->infile, PHP_STREAM_IS_STDIO)) { + if (php_stream_is(ImageInfo->infile, PHP_STREAM_IS_STDIO)) { if (VCWD_STAT(FileName, &st) >= 0) { /* Store file date/time. */ ImageInfo->FileDateTime = st.st_mtime; @@ -3050,7 +3040,7 @@ int exif_read_file(image_info_type *ImageInfo, char *FileName, int read_thumbnai /*php_error(E_NOTICE, "open stream is file: %d", ImageInfo->FileSize);*/ } } else { - if ( !ImageInfo->FileSize) { + if (!ImageInfo->FileSize) { php_stream_seek(ImageInfo->infile, 0, SEEK_END); ImageInfo->FileSize = php_stream_tell(ImageInfo->infile); php_stream_seek(ImageInfo->infile, 0, SEEK_SET); @@ -3085,34 +3075,33 @@ PHP_FUNCTION(exif_read_data) if(ac >= 2) { convert_to_string_ex(p_sections_needed); sections_str = emalloc(strlen(Z_STRVAL_PP(p_sections_needed))+3); - if ( !sections_str) { + if (!sections_str) { EXIF_ERRLOG_EALLOC RETURN_FALSE; } sprintf(sections_str, ",%s,", Z_STRVAL_PP(p_sections_needed)); /* sections_str DOES start with , and SPACES are NOT allowed in names */ s = sections_str; - while(*++s) - { - if(*s==' ') *s = ','; + while(*++s) { + if(*s==' ') { + *s = ','; + } } - for (i=0; i<SECTION_COUNT; i++) - { + for (i=0; i<SECTION_COUNT; i++) { sprintf(tmp, ",%s,", exif_get_sectionname(i)); - if ( strstr(sections_str, tmp)) - { + if (strstr(sections_str, tmp)) { sections_needed |= 1<<i; } } - if ( sections_str) efree(sections_str); + EFREE_IF(sections_str); /* now see what we need */ #ifdef EXIF_DEBUG sections_str = exif_get_sectionlist(sections_needed); - if ( !sections_str) { + if (!sections_str) { RETURN_FALSE; } php_error(E_NOTICE, "Sections needed: %s", sections_str[0] ? sections_str : "None"); - if ( sections_str) efree(sections_str); + EFREE_IF(sections_str); #endif } if(ac >= 3) { @@ -3135,7 +3124,8 @@ PHP_FUNCTION(exif_read_data) sections_str = exif_get_sectionlist(ImageInfo.sections_found); #ifdef EXIF_DEBUG - if ( sections_str) php_error(E_NOTICE, "sections found: %s", sections_str[0] ? sections_str : "None"); + if (sections_str) + php_error(E_NOTICE, "sections found: %s", sections_str[0] ? sections_str : "None"); #endif ImageInfo.sections_found |= FOUND_COMPUTED;/* do not inform about in debug*/ @@ -3143,7 +3133,7 @@ PHP_FUNCTION(exif_read_data) if (ret==FALSE || (sections_needed && !(sections_needed&ImageInfo.sections_found)) || array_init(return_value) == FAILURE) { /* array_init must be checked at last! otherwise the array must be freed if a later test fails. */ exif_discard_imageinfo(&ImageInfo); - if ( sections_str) efree(sections_str); + EFREE_IF(sections_str); RETURN_FALSE; } @@ -3152,90 +3142,90 @@ PHP_FUNCTION(exif_read_data) #endif /* now we can add our information */ - exif_iif_add_str( &ImageInfo, SECTION_FILE, "FileName", ImageInfo.FileName); - exif_iif_add_int( &ImageInfo, SECTION_FILE, "FileDateTime", ImageInfo.FileDateTime); - exif_iif_add_int( &ImageInfo, SECTION_FILE, "FileSize", ImageInfo.FileSize); - exif_iif_add_int( &ImageInfo, SECTION_FILE, "FileType", ImageInfo.FileType); - exif_iif_add_str( &ImageInfo, SECTION_FILE, "SectionsFound", sections_str ? sections_str : "NONE"); + exif_iif_add_str(&ImageInfo, SECTION_FILE, "FileName", ImageInfo.FileName); + exif_iif_add_int(&ImageInfo, SECTION_FILE, "FileDateTime", ImageInfo.FileDateTime); + exif_iif_add_int(&ImageInfo, SECTION_FILE, "FileSize", ImageInfo.FileSize); + exif_iif_add_int(&ImageInfo, SECTION_FILE, "FileType", ImageInfo.FileType); + exif_iif_add_str(&ImageInfo, SECTION_FILE, "SectionsFound", sections_str ? sections_str : "NONE"); #ifdef EXIF_DEBUG php_error(E_NOTICE, "generate section COMPUTED"); #endif if (ImageInfo.Width>0 && ImageInfo.Height>0) { - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "html", "width=\"%d\" height=\"%d\"", ImageInfo.Width, ImageInfo.Height); - exif_iif_add_int( &ImageInfo, SECTION_COMPUTED, "Height", ImageInfo.Height); - exif_iif_add_int( &ImageInfo, SECTION_COMPUTED, "Width", ImageInfo.Width); + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "html", "width=\"%d\" height=\"%d\"", ImageInfo.Width, ImageInfo.Height); + exif_iif_add_int(&ImageInfo, SECTION_COMPUTED, "Height", ImageInfo.Height); + exif_iif_add_int(&ImageInfo, SECTION_COMPUTED, "Width", ImageInfo.Width); } - exif_iif_add_int( &ImageInfo, SECTION_COMPUTED, "IsColor", ImageInfo.IsColor); + exif_iif_add_int(&ImageInfo, SECTION_COMPUTED, "IsColor", ImageInfo.IsColor); if (ImageInfo.FocalLength) { - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "FocalLength", "%4.1fmm", ImageInfo.FocalLength); + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "FocalLength", "%4.1fmm", ImageInfo.FocalLength); if(ImageInfo.CCDWidth) { - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "35mmFocalLength", "%dmm", (int)(ImageInfo.FocalLength/ImageInfo.CCDWidth*35+0.5)); + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "35mmFocalLength", "%dmm", (int)(ImageInfo.FocalLength/ImageInfo.CCDWidth*35+0.5)); } } if(ImageInfo.CCDWidth) { - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "CCDWidth", "%dmm", (int)ImageInfo.CCDWidth); + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "CCDWidth", "%dmm", (int)ImageInfo.CCDWidth); } if(ImageInfo.ExposureTime>0) { if(ImageInfo.ExposureTime <= 0.5) { - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "ExposureTime", "%0.3f s (1/%d)", ImageInfo.ExposureTime, (int)(0.5 + 1/ImageInfo.ExposureTime)); + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "ExposureTime", "%0.3f s (1/%d)", ImageInfo.ExposureTime, (int)(0.5 + 1/ImageInfo.ExposureTime)); } else { - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "ExposureTime", "%0.3f s", ImageInfo.ExposureTime); + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "ExposureTime", "%0.3f s", ImageInfo.ExposureTime); } } if(ImageInfo.ApertureFNumber) { - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "ApertureFNumber", "f/%.1f", ImageInfo.ApertureFNumber); + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "ApertureFNumber", "f/%.1f", ImageInfo.ApertureFNumber); } if(ImageInfo.Distance) { if(ImageInfo.Distance<0) { - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "FocusDistance", "Infinite"); + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "FocusDistance", "Infinite"); } else { - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "FocusDistance", "%0.2fm", ImageInfo.Distance); + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "FocusDistance", "%0.2fm", ImageInfo.Distance); } } if (ImageInfo.UserComment) { - exif_iif_add_buffer( &ImageInfo, SECTION_COMPUTED, "UserComment", ImageInfo.UserCommentLength, ImageInfo.UserComment); - if ( ImageInfo.UserCommentEncoding && strlen(ImageInfo.UserCommentEncoding)) { - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "UserCommentEncoding", ImageInfo.UserCommentEncoding); + exif_iif_add_buffer(&ImageInfo, SECTION_COMPUTED, "UserComment", ImageInfo.UserCommentLength, ImageInfo.UserComment); + if (ImageInfo.UserCommentEncoding && strlen(ImageInfo.UserCommentEncoding)) { + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "UserCommentEncoding", ImageInfo.UserCommentEncoding); } } - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "Copyright", ImageInfo.Copyright); - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "Copyright.Photographer", ImageInfo.CopyrightPhotographer); - exif_iif_add_str( &ImageInfo, SECTION_COMPUTED, "Copyright.Editor", ImageInfo.CopyrightEditor); + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "Copyright", ImageInfo.Copyright); + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "Copyright.Photographer", ImageInfo.CopyrightPhotographer); + exif_iif_add_str(&ImageInfo, SECTION_COMPUTED, "Copyright.Editor", ImageInfo.CopyrightEditor); - if ( ImageInfo.Thumbnail.size) { - if ( read_thumbnail) { + if (ImageInfo.Thumbnail.size) { + if (read_thumbnail) { /* not exif_iif_add_str : this is a buffer */ - exif_iif_add_tag( &ImageInfo, SECTION_THUMBNAIL, "THUMBNAIL", TAG_NONE, TAG_FMT_UNDEFINED, ImageInfo.Thumbnail.size, ImageInfo.Thumbnail.data); + exif_iif_add_tag(&ImageInfo, SECTION_THUMBNAIL, "THUMBNAIL", TAG_NONE, TAG_FMT_UNDEFINED, ImageInfo.Thumbnail.size, ImageInfo.Thumbnail.data); } - if ( !ImageInfo.Thumbnail.width || !ImageInfo.Thumbnail.height) { + if (!ImageInfo.Thumbnail.width || !ImageInfo.Thumbnail.height) { /* try to evaluate if thumbnail data is present */ - exif_scan_thumbnail( &ImageInfo); + exif_scan_thumbnail(&ImageInfo); } } - if ( ImageInfo.Thumbnail.width && ImageInfo.Thumbnail.height) { - exif_iif_add_int( &ImageInfo, SECTION_COMPUTED, "Thumbnail.Height", ImageInfo.Thumbnail.height); - exif_iif_add_int( &ImageInfo, SECTION_COMPUTED, "Thumbnail.Width", ImageInfo.Thumbnail.width); + if (ImageInfo.Thumbnail.width && ImageInfo.Thumbnail.height) { + exif_iif_add_int(&ImageInfo, SECTION_COMPUTED, "Thumbnail.Height", ImageInfo.Thumbnail.height); + exif_iif_add_int(&ImageInfo, SECTION_COMPUTED, "Thumbnail.Width", ImageInfo.Thumbnail.width); } - if ( sections_str) efree(sections_str); + EFREE_IF(sections_str); #ifdef EXIF_DEBUG php_error(E_NOTICE, "adding image infos"); #endif - add_assoc_image_info( return_value, sub_arrays, &ImageInfo, SECTION_FILE); - add_assoc_image_info( return_value, 1, &ImageInfo, SECTION_COMPUTED); - add_assoc_image_info( return_value, sub_arrays, &ImageInfo, SECTION_ANY_TAG); - add_assoc_image_info( return_value, sub_arrays, &ImageInfo, SECTION_IFD0); - add_assoc_image_info( return_value, 1, &ImageInfo, SECTION_THUMBNAIL); - add_assoc_image_info( return_value, sub_arrays, &ImageInfo, SECTION_COMMENT); - add_assoc_image_info( return_value, sub_arrays, &ImageInfo, SECTION_EXIF); - add_assoc_image_info( return_value, sub_arrays, &ImageInfo, SECTION_GPS); - add_assoc_image_info( return_value, sub_arrays, &ImageInfo, SECTION_INTEROP); - add_assoc_image_info( return_value, sub_arrays, &ImageInfo, SECTION_FPIX); - add_assoc_image_info( return_value, sub_arrays, &ImageInfo, SECTION_APP12); + add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_FILE); + add_assoc_image_info(return_value, 1, &ImageInfo, SECTION_COMPUTED); + add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_ANY_TAG); + add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_IFD0); + add_assoc_image_info(return_value, 1, &ImageInfo, SECTION_THUMBNAIL); + add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_COMMENT); + add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_EXIF); + add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_GPS); + add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_INTEROP); + add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_FPIX); + add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_APP12); #ifdef EXIF_DEBUG php_error(E_NOTICE, "Discarding info"); @@ -3259,12 +3249,12 @@ PHP_FUNCTION(exif_thumbnail) memset(&ImageInfo, 0, sizeof(ImageInfo)); - if ( (arg_c != 1 && arg_c != 3) || zend_get_parameters_ex(arg_c, &p_name, &p_width, &p_height) == FAILURE) { + if ((arg_c != 1 && arg_c != 3) || zend_get_parameters_ex(arg_c, &p_name, &p_width, &p_height) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_string_ex(p_name); - if ( arg_c == 3) { + if (arg_c == 3) { zval_dtor(*p_width); zval_dtor(*p_height); } @@ -3275,14 +3265,13 @@ PHP_FUNCTION(exif_thumbnail) RETURN_FALSE; } - if ( !ImageInfo.Thumbnail.data || !ImageInfo.Thumbnail.size) { + if (!ImageInfo.Thumbnail.data || !ImageInfo.Thumbnail.size) { #ifdef EXIF_DEBUG php_error(E_NOTICE, "No thumbnail data %d %d, %d x %d", ImageInfo.Thumbnail.data, ImageInfo.Thumbnail.size, ImageInfo.Thumbnail.width, ImageInfo.Thumbnail.height); #endif - if ( arg_c == 3) - { - ZVAL_LONG( *p_width, ImageInfo.Thumbnail.width); - ZVAL_LONG( *p_height, ImageInfo.Thumbnail.height); + if (arg_c == 3) { + ZVAL_LONG(*p_width, ImageInfo.Thumbnail.width); + ZVAL_LONG(*p_height, ImageInfo.Thumbnail.height); } exif_discard_imageinfo(&ImageInfo); RETURN_FALSE; @@ -3292,15 +3281,13 @@ PHP_FUNCTION(exif_thumbnail) php_error(E_NOTICE, "Returning thumbnail(%d)", ImageInfo.Thumbnail.size); #endif - ZVAL_STRINGL( return_value, ImageInfo.Thumbnail.data, ImageInfo.Thumbnail.size, 1); - if ( arg_c == 3) - { - if ( !ImageInfo.Thumbnail.width || !ImageInfo.Thumbnail.height) - { - exif_scan_thumbnail( &ImageInfo); + ZVAL_STRINGL(return_value, ImageInfo.Thumbnail.data, ImageInfo.Thumbnail.size, 1); + if (arg_c == 3) { + if (!ImageInfo.Thumbnail.width || !ImageInfo.Thumbnail.height) { + exif_scan_thumbnail(&ImageInfo); } - ZVAL_LONG( *p_width, ImageInfo.Thumbnail.width); - ZVAL_LONG( *p_height, ImageInfo.Thumbnail.height); + ZVAL_LONG(*p_width, ImageInfo.Thumbnail.width); + ZVAL_LONG(*p_height, ImageInfo.Thumbnail.height); } #ifdef EXIF_DEBUG @@ -3339,10 +3326,10 @@ PHP_FUNCTION(exif_imagetype) php_stream_close(stream); - if ( itype == IMAGE_FILETYPE_UNKNOWN) { + if (itype == IMAGE_FILETYPE_UNKNOWN) { RETURN_FALSE; } else { - ZVAL_LONG( return_value, itype); + ZVAL_LONG(return_value, itype); } } /* }}} */ |