From a729c2c36c1144a5ea64ca297244d3e31703a8cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Sun, 16 Dec 2018 18:51:29 +0100 Subject: [PATCH] Fix inifinite loop while parsing subdirs. Improved clarity of the original while loop. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Slávek Banko (cherry picked from commit 82824eab47a7c7a4be97d29f3674d560cb0164c2) --- krename/batchrenamer.cpp | 8 +++++--- krename/krenameimpl.cpp | 12 ++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/krename/batchrenamer.cpp b/krename/batchrenamer.cpp index 371a0da..98b2ef4 100644 --- a/krename/batchrenamer.cpp +++ b/krename/batchrenamer.cpp @@ -839,8 +839,11 @@ void BatchRenamer::parseSubdirs( data* f ) // create the missing subdir now int i = 0; - TQString d = ""; - while (!(d = dirs.section("/", i, i, TQString::SectionSkipEmpty)).isEmpty()) { // asignment here! + TQString d = TQString::null; + for (d = dirs.section("/", i, i, TQString::SectionSkipEmpty); + !d.isEmpty(); + i++, d = dirs.section("/", i, i, TQString::SectionSkipEmpty)) + { KURL url = f->dst.url; // it is important to unescape here // to support dirnames containing "&" or @@ -852,7 +855,6 @@ void BatchRenamer::parseSubdirs( data* f ) f->dst.url.addPath( d ); f->dst.directory.append( d + "/" ); - i++; } } } diff --git a/krename/krenameimpl.cpp b/krename/krenameimpl.cpp index 1835fd1..e62c81c 100644 --- a/krename/krenameimpl.cpp +++ b/krename/krenameimpl.cpp @@ -1171,14 +1171,18 @@ bool KRenameImpl::setupBatchRenamer( BatchRenamer* b, bool preview ) int i = 0; TQString d = "/"; - while (!(d += url.section( "/", i, i, TQString::SectionSkipEmpty)).isEmpty()) { // asignment here! - if (!TDEIO::NetAccess::exists(d, false, parent) && !TDEIO::NetAccess::mkdir(d, parent, -1)) + TQString ds = TQString::null; + for (ds = url.section("/", i, i, TQString::SectionSkipEmpty); + !ds.isEmpty(); + i++, d.append("/"), ds = url.section("/", i, i, TQString::SectionSkipEmpty)) + { + d += ds; + if (!TDEIO::NetAccess::exists(d, false, parent) && + !TDEIO::NetAccess::mkdir(d, parent, -1)) { tqDebug( "Can't create %s", d.latin1() ); break; } - d.append( "/" ); - i++; } }