]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c
ShellPkg: bug fix for edit search/replace function
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / Edit / FileBuffer.c
index 9a2427f4e995f8aba9fd80ca168f6ba2129b359c..ba622983e1a19ccc066da1b7ca961a98d6e44bef 100644 (file)
@@ -2956,7 +2956,8 @@ FileBufferSearch (
   BOOLEAN         Found;\r
 \r
   Column = 0;\r
-\r
+  Position = 0;\r
+  \r
   //\r
   // search if in current line\r
   //\r
@@ -2969,20 +2970,20 @@ FileBufferSearch (
     Current = FileBuffer.CurrentLine->Buffer + FileBuffer.CurrentLine->Size;\r
   }\r
 \r
+  Found = FALSE;\r
+\r
   CharPos  =  StrStr (Current, Str);\r
   if (CharPos != NULL) {\r
-    Position = CharPos - Current;\r
-  } else {\r
-    Position = 0;\r
-  }\r
+    Position = CharPos - Current + 1;\r
+    Found   = TRUE;\r
+  } \r
 \r
   //\r
   // found\r
   //\r
-  if (Position != 0) {\r
+  if (Found == TRUE) {\r
     Column  = (Position - 1) + FileBuffer.FilePosition.Column + Offset;\r
     Row     = FileBuffer.FilePosition.Row;\r
-    Found   = TRUE;\r
   } else {\r
     //\r
     // not found so find through next lines\r
@@ -2995,9 +2996,11 @@ FileBufferSearch (
 //      Position  = StrStr (Line->Buffer, Str);\r
       CharPos  =  StrStr (Line->Buffer, Str);\r
       if (CharPos != NULL) {\r
-        Position = CharPos - Line->Buffer;\r
-      }\r
-      if (Position != 0) {\r
+        Position = CharPos - Line->Buffer + 1;\r
+        Found   = TRUE;\r
+      } \r
+      \r
+      if (Found == TRUE) {\r
         //\r
         // found\r
         //\r
@@ -3096,14 +3099,14 @@ FileBufferReplace (
     //\r
     // set replace into it\r
     //\r
-    Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column;\r
+    Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column - 1;\r
     for (Index = 0; Index < ReplaceLen; Index++) {\r
       Buffer[Index] = Replace[Index];\r
     }\r
   }\r
 \r
   if (ReplaceLen < SearchLen) {\r
-    Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column;\r
+    Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column - 1;\r
 \r
     for (Index = 0; Index < ReplaceLen; Index++) {\r
       Buffer[Index] = Replace[Index];\r
@@ -3122,7 +3125,7 @@ FileBufferReplace (
   }\r
 \r
   if (ReplaceLen == SearchLen) {\r
-    Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column;\r
+    Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column - 1;\r
     for (Index = 0; Index < ReplaceLen; Index++) {\r
       Buffer[Index] = Replace[Index];\r
     }\r