Project

General

Profile

Bug(バグ) #3302

Updated by Youichi Kimura over 6 years ago

h3. Overview (概要)

lib/util/opToolkit.class.php 内の opToolkit::writeCacheFile() に下記のようなコードがある。

<pre><code class="php">
if ($filesystem->copy($tmpFile, $pathToCacheFile, array('override' => true)))
{
$filesystem->remove($tmpFile);
}
</code></pre>

このコードには下記のような複数の問題があるため、この修正を行う。

* if の条件に、値を返さない sfFilesystem::copy() を指定している
* もし sfFilesystem::copy() が成功した場合に true を返すようなメソッドであることを期待していたとしても、$tmpFile のファイルは常に削除されるべきであるため if による分岐は不要である (失敗した場合でも一時ファイルは削除すべき)
* 一般的なファイルシステムの動作では copy よりも rename の方が確実かつ高速に動作する(inodeの変更のみで済むことによる)ため、sfFilesystem::copy() ではなく sfFilesystem::rename() を使うことが望ましい


h3. Spec (仕様)

* if による分岐を無くし、常に @$filesystem->remove($tmpFile)@ が実行されるようにする
* @$filesystem->copy(...)@ の代わりに @$filesystem->rename(...)@ を使用する

Back