From b3c80a0ff5bfb51e8406c2dda43c53a9a7421a38 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Thu, 25 Feb 2016 19:17:46 -0800 Subject: [PATCH] filebackend: Clean up TempFSFile and fix IDEA errors Change-Id: I4e25e3bf906fa3a918f4462fac1a6be5e85696aa --- includes/filebackend/TempFSFile.php | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/includes/filebackend/TempFSFile.php b/includes/filebackend/TempFSFile.php index 3ec34f18a1..f57284080d 100644 --- a/includes/filebackend/TempFSFile.php +++ b/includes/filebackend/TempFSFile.php @@ -31,9 +31,6 @@ class TempFSFile extends FSFile { /** @var bool Garbage collect the temp file */ protected $canDelete = false; - /** @var array Active temp files to purge on shutdown */ - protected static $instances = []; - /** @var array Map of (path => 1) for paths to delete on shutdown */ protected static $pathsCollect = null; @@ -55,25 +52,25 @@ class TempFSFile extends FSFile { * @return TempFSFile|null */ public static function factory( $prefix, $extension = '' ) { - $base = wfTempDir() . '/' . $prefix . wfRandomString( 12 ); - $ext = ( $extension != '' ) ? ".{$extension}" : ""; - for ( $attempt = 1; true; $attempt++ ) { - $path = "{$base}-{$attempt}{$ext}"; + $ext = ( $extension != '' ) ? ".{$extension}" : ''; + + $attempts = 5; + while ( $attempts-- ) { + $path = wfTempDir() . '/' . $prefix . wfRandomString( 12 ) . $ext; MediaWiki\suppressWarnings(); $newFileHandle = fopen( $path, 'x' ); MediaWiki\restoreWarnings(); if ( $newFileHandle ) { fclose( $newFileHandle ); - break; // got it - } - if ( $attempt >= 5 ) { - return null; // give up + $tmpFile = new self( $path ); + $tmpFile->autocollect(); + // Safely instantiated, end loop. + return $tmpFile; } } - $tmpFile = new self( $path ); - $tmpFile->autocollect(); // safely instantiated - return $tmpFile; + // Give up + return null; } /** -- 2.20.1