diff --git a/src/media/ffmpeg.cpp b/src/media/ffmpeg.cpp index c14614d25..4d89397fc 100644 --- a/src/media/ffmpeg.cpp +++ b/src/media/ffmpeg.cpp @@ -269,19 +269,23 @@ int ffmpeg_resize(ncvisual* nc, int rows, int cols) { } auto ffmpeg_details_init(void) -> ncvisual_details* { - auto deets = new ncvisual_details{}; - deets->stream_index = -1; - deets->sub_stream_index = -1; - if((deets->frame = av_frame_alloc()) == nullptr){ - delete deets; - return nullptr; + auto deets = static_cast(malloc(sizeof(ncvisual_details))); + if(deets){ + memset(deets, 0, sizeof(*deets)); + deets->stream_index = -1; + deets->sub_stream_index = -1; + if((deets->frame = av_frame_alloc()) == nullptr){ + free(deets); + return nullptr; + } } return deets; } auto ffmpeg_create() -> ncvisual* { - ncvisual* nc = static_cast(malloc(sizeof(*nc))); + auto nc = static_cast(malloc(sizeof(ncvisual))); if(nc){ + memset(nc, 0, sizeof(*nc)); if((nc->details = ffmpeg_details_init()) == nullptr){ free(nc); return nullptr; @@ -591,7 +595,7 @@ auto ffmpeg_details_destroy(ncvisual_details* deets) -> void { av_packet_free(&deets->packet); avformat_close_input(&deets->fmtctx); avsubtitle_free(&deets->subtitle); - delete deets; + free(deets); } static const ncvisual_implementation ffmpeg_impl = { diff --git a/src/media/oiio.cpp b/src/media/oiio.cpp index ee6f6640e..801c57275 100644 --- a/src/media/oiio.cpp +++ b/src/media/oiio.cpp @@ -16,12 +16,9 @@ typedef struct ncvisual_details { } ncvisual_details; auto oiio_details_init(void) -> ncvisual_details* { - auto deets = new ncvisual_details{}; + auto deets = static_cast(malloc(sizeof(ncvisual_details))); if(deets){ - deets->image = nullptr; - deets->frame = nullptr; - deets->ibuf = nullptr; - deets->framenum = 0; + memset(deets, 0, sizeof(*deets)); } return deets; } @@ -34,8 +31,9 @@ auto oiio_details_destroy(ncvisual_details* deets) -> void { } auto oiio_create() -> ncvisual* { - ncvisual* nc = static_cast(malloc(sizeof(*nc))); + auto nc = static_cast(malloc(sizeof(*nc))); if(nc){ + memset(nc, 0, sizeof(*nc)); if((nc->details = oiio_details_init()) == nullptr){ free(nc); return nullptr;