--- parser3/src/classes/image.C 2020/12/23 15:01:13 1.181 +++ parser3/src/classes/image.C 2024/09/13 04:01:22 1.186 @@ -1,8 +1,8 @@ /** @file Parser: @b image parser class. - Copyright (c) 2001-2020 Art. Lebedev Studio (http://www.artlebedev.com) - Author: Alexandr Petrosian (http://paf.design.ru) + Copyright (c) 2001-2023 Art. Lebedev Studio (http://www.artlebedev.com) + Authors: Konstantin Morshnev , Alexandr Petrosian */ /* @@ -26,7 +26,7 @@ #include "pa_table.h" #include "pa_charsets.h" -volatile const char * IDENT_IMAGE_C="$Id: image.C,v 1.181 2020/12/23 15:01:13 moko Exp $"; +volatile const char * IDENT_IMAGE_C="$Id: image.C,v 1.186 2024/09/13 04:01:22 moko Exp $"; // defines @@ -421,11 +421,8 @@ static Value* parse_IFD_entry_formatted_ size_t length=components_count; // Data format is "YYYY:MM:DD HH:MM:SS"+0x00, total 20bytes if(length==JPEG_EXIF_DATE_CHARS && isdigit((unsigned char)cstr[0]) && cstr[length-1]==0) { - char cstr_writable[JPEG_EXIF_DATE_CHARS]; - strcpy(cstr_writable, cstr); - try { - tm tmIn=cstr_to_time_t(cstr_writable, 0); + tm tmIn=cstr_to_time_t(pa_strdup(cstr), 0); return new VDate(tmIn); } catch(...) { /*ignore bad date times*/ } @@ -441,7 +438,7 @@ static Value* parse_IFD_entry_formatted_ HashStringValue& hash=result->hash(); for(uint i=0; ifields().get(name_name)->as_string(); Measure_buf_reader reader(vfile->value_ptr(), vfile->value_size(), *file_name); measure(*file_name, reader, info); @@ -1443,8 +1440,8 @@ static void _circle(Request& r, MethodPa gdImage& as_image(MethodParams& params, int index, const char* msg) { Value& value=params.as_no_junction(index, msg); - if(Value* vimage=value.as(VIMAGE_TYPE)) { - return static_cast(vimage)->image(); + if(VImage* vimage=dynamic_cast(&value)) { + return vimage->image(); } else throw Exception(PARSER_RUNTIME, 0, msg); }