diff --git a/src/kcrash.cpp b/src/kcrash.cpp --- a/src/kcrash.cpp +++ b/src/kcrash.cpp @@ -561,10 +561,15 @@ } // make sure the constData() pointer remains valid when we call startProcess by making a copy - QByteArray startupId = KStartupInfo::startupId(); - if (!startupId.isNull()) { + char startupId[128]; + if (!KStartupInfo::startupId().isNull()) { + // null-terminate it + std::copy_n(KStartupInfo::startupId().constBegin(), std::min(sizeof(startupId)-1, (unsigned)KStartupInfo::startupId().size()), startupId) [0] = 0; + if (sizeof(startupId)-1 < KStartupInfo::startupId().size()) + fprintf (stderr, "KCrash: startupId buffer not big enough\n"); + argv[i++] = "--startupid"; - argv[i++] = startupId.constData(); + argv[i++] = startupId; } if (s_flags & SaferDialog) {