# HG changeset patch # User Sebastien Jodogne # Date 1588919238 -7200 # Node ID 061f3d031b5ddd4b4e818b32cf868fa70155d510 # Parent c62f84c7eda91900e4b584b0c082c9c301fc8ae6 cont diff -r c62f84c7eda9 -r 061f3d031b5d Core/DicomParsing/MemoryBufferTranscoder.cpp --- a/Core/DicomParsing/MemoryBufferTranscoder.cpp Thu May 07 17:21:20 2020 +0200 +++ b/Core/DicomParsing/MemoryBufferTranscoder.cpp Fri May 08 08:27:18 2020 +0200 @@ -73,13 +73,16 @@ #if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1 if (useDcmtk_) { - return dcmtk_.TranscodeToBuffer(target, hasSopInstanceUidChanged, buffer, size, allowedSyntaxes, allowNewSopInstanceUid); + if (dcmtk_.TranscodeToBuffer(target, hasSopInstanceUidChanged, buffer, + size, allowedSyntaxes, allowNewSopInstanceUid)) + { + return true; + } } - else #endif - { - return Transcode(target, hasSopInstanceUidChanged, buffer, size, allowedSyntaxes, allowNewSopInstanceUid); - } + + return Transcode(target, hasSopInstanceUidChanged, buffer, size, + allowedSyntaxes, allowNewSopInstanceUid); } @@ -92,21 +95,25 @@ #if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1 if (useDcmtk_) { - return dcmtk_.TranscodeToParsed(hasSopInstanceUidChanged, buffer, size, allowedSyntaxes, allowNewSopInstanceUid); + std::unique_ptr transcoded( + dcmtk_.TranscodeToParsed(hasSopInstanceUidChanged, buffer, size, + allowedSyntaxes, allowNewSopInstanceUid)); + if (transcoded.get() != NULL) + { + return transcoded.release(); + } + } +#endif + + std::string transcoded; + if (Transcode(transcoded, hasSopInstanceUidChanged, buffer, size, allowedSyntaxes, allowNewSopInstanceUid)) + { + return FromDcmtkBridge::LoadFromMemoryBuffer( + transcoded.empty() ? NULL : transcoded.c_str(), transcoded.size()); } else -#endif { - std::string transcoded; - if (Transcode(transcoded, hasSopInstanceUidChanged, buffer, size, allowedSyntaxes, allowNewSopInstanceUid)) - { - return FromDcmtkBridge::LoadFromMemoryBuffer( - transcoded.empty() ? NULL : transcoded.c_str(), transcoded.size()); - } - else - { - return NULL; - } + return NULL; } }