Project

General

Profile

Bug #1143 ยป testprg.cc

Test program demonstrating the bug - Marco Eichelberg, 2024-11-19 14:09

 
#include <dcmtk/dcmdata/dctk.h>
#include <iostream>

int main() {
std::string lorem_ipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
"eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut "
"enim ad minim veniam, quis nostrud exercitation ullamco laboris "
"nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in "
"reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla "
"pariatur. Excepteur sint occaecat cupidatat non proident, sunt in "
"culpa qui officia deserunt mollit anim id est laborum.";

std::string long_string = lorem_ipsum;
while (long_string.size() < 4000) {
long_string += " " + lorem_ipsum;
}

DcmDataset data;
OFCondition result;

result = data.chooseRepresentation(EXS_LittleEndianExplicit, nullptr);
if (!result.good()) { return 2; }

result = data.putAndInsertString(DCM_SpecificCharacterSet, "ISO_IR 192");
if (!result.good()) { return 2; }

result = data.putAndInsertString(DCM_DetectorDescription, long_string.data(), long_string.size(), true);
if (!result.good()) { return 2; }

result = data.convertToUTF8();
if (!result.good()) { return 2; }

const char* value = nullptr;
result = data.findAndGetString(DCM_DetectorDescription, value);
if (!result.good()) { return 2; }

std::string new_string = value;

std::cout << "Results match: " << (long_string == new_string ? "yes": "no") << std::endl;
std::cout << "Original size: " << long_string.size() << std::endl;
std::cout << "Converted size: " << new_string.size() << std::endl;
std::cout << "Original: ..." << long_string.substr(1000, 48) << std::endl;
std::cout << "Converted: ..." << new_string.substr(1000, 48) << std::endl;

return long_string == new_string ? 1 : 0;
}

    (1-1/1)