Filesystem: restrict getversionedfilename to 100 tries
This commit is contained in:
parent
1c49054844
commit
2d2c09bdf4
@ -39,6 +39,9 @@ Public Class File
|
|||||||
' Source: https://docs.microsoft.com/de-de/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maximum-path-length-limitation
|
' Source: https://docs.microsoft.com/de-de/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maximum-path-length-limitation
|
||||||
Private Const MAX_FILE_PATH_LENGTH = 250
|
Private Const MAX_FILE_PATH_LENGTH = 250
|
||||||
|
|
||||||
|
' This prevents an infinite loop when no file can be created in a location
|
||||||
|
Private Const MAX_FILE_VERSION = 100
|
||||||
|
|
||||||
Private Const FILE_NAME_ACCESS_TEST = "accessTest.txt"
|
Private Const FILE_NAME_ACCESS_TEST = "accessTest.txt"
|
||||||
|
|
||||||
Public Sub New(LogConfig As LogConfig)
|
Public Sub New(LogConfig As LogConfig)
|
||||||
@ -151,8 +154,13 @@ Public Class File
|
|||||||
oFileNameWithoutExtension = oNewFileNameWithoutExtension
|
oFileNameWithoutExtension = oNewFileNameWithoutExtension
|
||||||
End If
|
End If
|
||||||
|
|
||||||
' while file exists, increment version
|
' while file exists, increment version.
|
||||||
|
' version cannot go above MAX_FILE_VERSION, to prevent infinite loop
|
||||||
Do
|
Do
|
||||||
|
If oFileVersion >= MAX_FILE_VERSION Then
|
||||||
|
Throw New OverflowException($"Tried '{MAX_FILE_VERSION}' times to version filename before giving up. Sorry.")
|
||||||
|
End If
|
||||||
|
|
||||||
oFinalFileName = Path.Combine(oDestinationDir, GetFilenameWithVersion(oFileNameWithoutExtension, oVersionSeparator, oFileVersion, oExtension))
|
oFinalFileName = Path.Combine(oDestinationDir, GetFilenameWithVersion(oFileNameWithoutExtension, oVersionSeparator, oFileVersion, oExtension))
|
||||||
_Logger.Debug("Intermediate Filename is {0}", oFinalFileName)
|
_Logger.Debug("Intermediate Filename is {0}", oFinalFileName)
|
||||||
_Logger.Debug("File version: {0}", oFileVersion)
|
_Logger.Debug("File version: {0}", oFileVersion)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user