From: dcoppa Date: Tue, 12 May 2015 11:56:55 +0000 (+0200) Subject: Be careful about the lifetime of stack variables X-Git-Tag: 2.5~78^2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9b1ff7b5b800f5e34f39bf9289d0bd0ca89949c4;p=minitube Be careful about the lifetime of stack variables This commit fixes minitube hanging indefinitely on OpenBSD while showing search results. ptr is pointing to free'd memory, causing an infinite loop when parsing video duration property into src/paginatedvideosource.cpp (L148) See also the following links for a better explanation: http://blog.aaronballman.com/2011/07/returning-stack-based-values/ https://wiki.qt.io/Qt_project_org_faq#How_can_I_convert_a_QString_to_char.2A_and_vice_versa.3F --- diff --git a/src/datautils.cpp b/src/datautils.cpp index 11bb943..36811b0 100644 --- a/src/datautils.cpp +++ b/src/datautils.cpp @@ -50,7 +50,9 @@ uint DataUtils::parseIsoPeriod(const QString &isoPeriod) { uint days = 0, hours = 0, minutes = 0, seconds = 0; - const char *ptr = isoPeriod.toStdString().c_str(); + QByteArray ba = isoPeriod.toLocal8Bit(); + const char *ptr = ba.data(); + while (*ptr) { if(*ptr == 'P' || *ptr == 'T') { ptr++;