diff --git a/common/project.cpp b/common/project.cpp index 31cd656c..daac33cc 100644 --- a/common/project.cpp +++ b/common/project.cpp @@ -1859,8 +1859,8 @@ bool Project::ExportPOVRay(const QString& FileName) lcPiecesLibrary* Library = lcGetPiecesLibrary(); std::map> PieceTable; size_t NumColors = gColorList.size(); - std::vector> LgeoColorTable(NumColors); - std::vector> ColorTable(NumColors); + std::vector> LgeoColorTable(NumColors); + std::vector> ColorTable(NumColors); const std::vector>& Lights = gMainWindow->GetActiveModel()->GetLights(); const lcCamera* Camera = gMainWindow->GetActiveView()->GetCamera(); @@ -2295,7 +2295,8 @@ bool Project::ExportPOVRay(const QString& FileName) if (ColorIdx >= NumColors) continue; - strncpy(LgeoColorTable[ColorIdx].data(), Name, LC_MAX_COLOR_NAME); + strncpy(LgeoColorTable[ColorIdx].data(), Name, LgeoColorTable[ColorIdx].size()); + LgeoColorTable[ColorIdx][LgeoColorTable[ColorIdx].size() - 1] = 0; } } @@ -2321,16 +2322,16 @@ bool Project::ExportPOVRay(const QString& FileName) } else { - char MacroName[LC_MAX_COLOR_NAME]; - if (lcIsColorChrome(ColorIdx)) - sprintf(MacroName, "Chrome"); - else if (lcIsColorRubber(ColorIdx)) - sprintf(MacroName, "Rubber"); - else - sprintf(MacroName, "Opaque"); + const char* MacroName; - sprintf(Line, "#ifndef (lc_%s)\n#declare lc_%s = %sColor(%g, %g, %g)\n#end\n\n", - Color->SafeName, Color->SafeName, MacroName, Color->Value[0], Color->Value[1], Color->Value[2]); + if (lcIsColorChrome(ColorIdx)) + MacroName = "Chrome"; + else if (lcIsColorRubber(ColorIdx)) + MacroName = "Rubber"; + else + MacroName = "Opaque"; + + sprintf(Line, "#ifndef (lc_%s)\n#declare lc_%s = %sColor(%g, %g, %g)\n#end\n\n", Color->SafeName, Color->SafeName, MacroName, Color->Value[0], Color->Value[1], Color->Value[2]); } } else