X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Ffilebackend%2FTempFSFile.php;h=f57284080d13cc30a7cb0f2984f3a85fd94702b1;hb=08ca4e37c561fc7410d5f210c3136b0ce26f16c9;hp=312b65c1b65de389937a9b930691b4cb7b9a2f77;hpb=5b74a93eff8d3ead5cb1c21ca38391ecb39a9575;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/filebackend/TempFSFile.php b/includes/filebackend/TempFSFile.php index 312b65c1b6..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 = array(); - /** @var array Map of (path => 1) for paths to delete on shutdown */ protected static $pathsCollect = null; @@ -41,8 +38,8 @@ class TempFSFile extends FSFile { parent::__construct( $path ); if ( self::$pathsCollect === null ) { - self::$pathsCollect = array(); - register_shutdown_function( array( __CLASS__, 'purgeAllOnShutdown' ) ); + self::$pathsCollect = []; + register_shutdown_function( [ __CLASS__, 'purgeAllOnShutdown' ] ); } } @@ -55,26 +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; } /** @@ -103,7 +99,7 @@ class TempFSFile extends FSFile { if ( is_object( $object ) ) { if ( !isset( $object->tempFSFileReferences ) ) { // Init first since $object might use __get() and return only a copy variable - $object->tempFSFileReferences = array(); + $object->tempFSFileReferences = []; } $object->tempFSFileReferences[] = $this; }