プロジェクト

全般

プロフィール

Bug(バグ) #3302

Youichi Kimura さんがほぼ12年前に更新

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(...)@ を使用する

戻る