diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b56cef0 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.13) + +project(EasyExif LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +add_library(easyExif + exif.cpp + exif.h +) + +add_executable(easyExifDemo + demo.cpp +) + +target_link_libraries(easyExifDemo + PRIVATE easyExif +) diff --git a/demo.cpp b/demo.cpp index cdff6df..cf5f6de 100644 --- a/demo.cpp +++ b/demo.cpp @@ -16,13 +16,25 @@ int main(int argc, char *argv[]) { fseek(fp, 0, SEEK_END); unsigned long fsize = ftell(fp); rewind(fp); - unsigned char *buf = new unsigned char[fsize]; - if (fread(buf, 1, fsize, fp) != fsize) { + unsigned char *buf = nullptr; + try + { + buf = new unsigned char[fsize]; + } + catch (std::exception const &) + { + fclose(fp); + printf("Failed to allocate %d bytes of RAM to read in \"%s\".\n", fsize, argv[1]); + return -4; + } + + size_t const numberOfObjectsReadSuccessfully = fread(buf, 1, fsize, fp); + fclose(fp); + if (numberOfObjectsReadSuccessfully != fsize) { printf("Can't read file.\n"); delete[] buf; return -2; } - fclose(fp); // Parse EXIF easyexif::EXIFInfo result;