Explorar o código

FIX: Range check error

Alexander Koblov %!s(int64=3) %!d(string=hai) anos
pai
achega
4aaa48f26e
Modificáronse 1 ficheiros con 16 adicións e 12 borrados
  1. 16 12
      components/doublecmd/dcstrutils.pas

+ 16 - 12
components/doublecmd/dcstrutils.pas

@@ -842,20 +842,24 @@ end;
 
 
 function ApplyRenameMask(aFileName: String; NameMask: String; ExtMask: String): String;
 function ApplyRenameMask(aFileName: String; NameMask: String; ExtMask: String): String;
 
 
-  function ApplyMask(const TargetString: String; Mask: String): String;
+  function ApplyMask(const TargetString, Mask: String): String;
   var
   var
-    i:Integer;
+    I: Integer;
   begin
   begin
-    Result:='';
-    for i:=1 to Length(Mask) do
-    begin
-      if Mask[i]= '?' then
-        Result:=Result + TargetString[i]
-      else
-      if Mask[i]= '*' then
-        Result:=Result + Copy(TargetString, i, Length(TargetString) - i + 1)
-      else
-        Result:=Result + Mask[i];
+    if (Length(TargetString) < Length(Mask)) then
+      Result:= TargetString
+    else begin
+      Result:= String.Empty;
+      for I:= 1 to Length(Mask) do
+      begin
+        if Mask[I] = '?' then
+          Result:=Result + TargetString[I]
+        else
+        if Mask[I] = '*' then
+          Result:= Result + Copy(TargetString, I, Length(TargetString) - I + 1)
+        else
+          Result:= Result + Mask[I];
+      end;
     end;
     end;
   end;
   end;