<table><tr><td style="">bruns added inline comments.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D27871">View Revision</a></tr></table><br /><div><strong>INLINE COMMENTS</strong><div><div style="margin: 6px 0 12px 0;"><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D27871#inline-157482">View Inline</a><span style="color: #4b4d51; font-weight: bold;">kio_sftp.cpp:1687</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">                <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">pos</span> <span style="color: #aa2211">!=</span> <span class="n">sbPart</span><span style="color: #aa2211">-></span><span class="n">size</span><span class="p">)</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">                    <span class="n">qCDebug</span><span class="p">(</span><span class="n">KIO_SFTP_LOG</span><span class="p">)</span> <span style="color: #aa2211"><<</span> <span style="color: #766510">"Failed to seek to"</span> <span style="color: #aa2211"><<</span> <span class="n">sbPart</span><span style="color: #aa2211">-></span><span class="n">size</span> <span style="color: #aa2211"><<</span> <span style="color: #766510">"bytes in source file. Reason given"</span> <span style="color: #aa2211"><<</span> <span class="n">strerror</span><span class="p">(</span><span class="n">errno</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                    <span class="n">qCDebug</span><span class="p">(</span><span class="n">KIO_SFTP_LOG</span><span class="p">)</span> <span style="color: #aa2211"><<</span> <span style="color: #766510">"Failed to seek to"</span> <span style="color: #aa2211"><<</span> <span class="n">sbPart</span><span style="color: #aa2211">-></span><span class="n">size</span> <span style="color: #aa2211"><<</span> <span style="color: #766510">"bytes in source file. Reason given<span class="bright">:</span>"</span> <span style="color: #aa2211"><<</span> <span class="n">strerror</span><span class="p">(</span><span class="n">errno</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; ">                    <span class="n">sftp_attributes_free</span><span class="p">(</span><span class="n">sb</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">You should save errno immediately after QT_LSEEK, otherwise any function may overwrite it. See <tt style="background: #ebebeb; font-size: 13px;">man 3 errno</tt>:</p>

<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><p style="padding: 0; margin: 8px;">A common mistake is to do</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">if (somecall() == -1) {
    printf("somecall() failed\n");
    if (errno == ...) { ... }
}</pre></div>

<p style="padding: 0; margin: 8px;">where errno no longer needs to have the value it had upon return from somecall() (i.e., it may have been changed by the printf(3)).  If the value of errno should be preserved across a library call, it must be saved:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">if (somecall() == -1) {
    int errsv = errno;
    printf("somecall() failed\n");
    if (errsv == ...) { ... }
}</pre></div></blockquote>

</div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D27871#inline-157483">View Inline</a><span style="color: #4b4d51; font-weight: bold;">kio_sftp.cpp:1955</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">        <span class="n">fd</span> <span style="color: #aa2211">=</span> <span class="n">QT_OPEN</span><span class="p">(</span> <span class="n">QFile</span><span style="color: #aa2211">::</span><span class="n">encodeName</span><span class="p">(</span><span class="n">sPart</span><span class="p">),</span> <span class="n">O_RDWR</span> <span class="p">);</span>  <span style="color: #74777d">// append if resuming</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">        <span class="n">offset</span> <span style="color: #aa2211">=</span> <span class="bright"></span><span class="n"><span class="bright">seekPos</span></span><span class="p">(</span><span class="n">fd</span><span class="p">,</span> <span class="bright"></span><span style="color: #601200"><span class="bright">0</span></span><span class="p">,</span> <span class="n">SEEK_<span class="bright">END</span></span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">        <span style="color: #aa4000">if</span><span class="p">(</span><span class="n">offset</span> <span class="bright"></span><span style="color: #aa2211"><span class="bright"><</span></span><span class="bright"> </span><span style="color: #601200"><span class="bright">0</span></span><span class="p">)</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">offset</span> <span style="color: #aa2211">=</span> <span class="bright"></span><span class="n"><span class="bright">QT_LSEEK</span></span><span class="p">(</span><span class="n">fd</span><span class="p">,</span> <span class="bright"></span><span class="n"><span class="bright">partFile</span></span><span class="bright"></span><span class="p"><span class="bright">.</span></span><span class="bright"></span><span class="n"><span class="bright">size</span></span><span class="bright"></span><span class="p"><span class="bright">()</span>,</span> <span class="n">SEEK_<span class="bright">SET</span></span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">if<span class="bright"></span></span><span class="bright"> </span><span class="p">(</span><span class="n">offset</span> <span class="bright"></span><span style="color: #aa2211"><span class="bright">!=</span></span><span class="bright"> </span><span class="n"><span class="bright">partFile</span></span><span class="bright"></span><span class="p"><span class="bright">.</span></span><span class="bright"></span><span class="n"><span class="bright">size</span></span><span class="bright"></span><span class="p"><span class="bright">()</span>)</span> <span class="p">{</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">dito</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R320 KIO Extras</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D27871">https://phabricator.kde.org/D27871</a></div></div><br /><div><strong>To: </strong>sitter, ngraham, feverfew<br /><strong>Cc: </strong>bruns, kde-frameworks-devel, kfm-devel, pberestov, iasensio, fprice, LeGast00n, cblack, MrPepe, fbampaloukas, alexde, GB_2, Codezela, feverfew, meven, michaelh, spoorun, navarromorales, firef, ngraham, andrebarros, emmanuelp, mikesomov<br /></div>