From 382e78c09ccaee02c8e709f630c9e094d37be470 Mon Sep 17 00:00:00 2001 From: jcarsey Date: Wed, 10 Aug 2011 14:48:14 +0000 Subject: ShellPkg: bug fix for edit search/replace function * Fix the search bug: if word to be searched at the beginning of the line, it can not be found out. Signed-off-by: kidzyoung reviewed-by: jcarsey git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12116 6f19259b-4bc3-4df7-8a09-765794883524 --- .../UefiShellDebug1CommandsLib/Edit/FileBuffer.c | 29 ++++++++++++---------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'ShellPkg') diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c index 9a2427f4e9..ba622983e1 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c @@ -2956,7 +2956,8 @@ FileBufferSearch ( BOOLEAN Found; Column = 0; - + Position = 0; + // // search if in current line // @@ -2969,20 +2970,20 @@ FileBufferSearch ( Current = FileBuffer.CurrentLine->Buffer + FileBuffer.CurrentLine->Size; } + Found = FALSE; + CharPos = StrStr (Current, Str); if (CharPos != NULL) { - Position = CharPos - Current; - } else { - Position = 0; - } + Position = CharPos - Current + 1; + Found = TRUE; + } // // found // - if (Position != 0) { + if (Found == TRUE) { Column = (Position - 1) + FileBuffer.FilePosition.Column + Offset; Row = FileBuffer.FilePosition.Row; - Found = TRUE; } else { // // not found so find through next lines @@ -2995,9 +2996,11 @@ FileBufferSearch ( // Position = StrStr (Line->Buffer, Str); CharPos = StrStr (Line->Buffer, Str); if (CharPos != NULL) { - Position = CharPos - Line->Buffer; - } - if (Position != 0) { + Position = CharPos - Line->Buffer + 1; + Found = TRUE; + } + + if (Found == TRUE) { // // found // @@ -3096,14 +3099,14 @@ FileBufferReplace ( // // set replace into it // - Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column; + Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column - 1; for (Index = 0; Index < ReplaceLen; Index++) { Buffer[Index] = Replace[Index]; } } if (ReplaceLen < SearchLen) { - Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column; + Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column - 1; for (Index = 0; Index < ReplaceLen; Index++) { Buffer[Index] = Replace[Index]; @@ -3122,7 +3125,7 @@ FileBufferReplace ( } if (ReplaceLen == SearchLen) { - Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column; + Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column - 1; for (Index = 0; Index < ReplaceLen; Index++) { Buffer[Index] = Replace[Index]; } -- cgit v1.2.3