mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
Merge pull request #4152 from RaiKoHoff/Dev_Master
Fix crash in SCI_FINDTEXTFULL caused by using wrong data structure
This commit is contained in:
commit
759eb3cb59
15
src/Edit.c
15
src/Edit.c
@ -5460,17 +5460,17 @@ void EditGetExcerpt(HWND hwnd, LPWSTR lpszExcerpt, DWORD cchExcerpt)
|
||||
}
|
||||
|
||||
WCHAR tch[256] = { L'\0' };
|
||||
struct Sci_TextRange tr = { { 0, 0 }, NULL };
|
||||
struct Sci_TextRangeFull tr = { { 0, 0 }, NULL };
|
||||
/*if (iCurPos != iAnchorPos && !Sci_IsMultiOrRectangleSelection()) {*/
|
||||
tr.chrg.cpMin = (DocPosCR)SciCall_GetSelectionStart();
|
||||
tr.chrg.cpMax = min_cr((tr.chrg.cpMin + (DocPosCR)COUNTOF(tch)), (DocPosCR)SciCall_GetSelectionEnd());
|
||||
tr.chrg.cpMax = min_p((tr.chrg.cpMin + COUNTOF(tch)), SciCall_GetSelectionEnd());
|
||||
/*}
|
||||
else {
|
||||
int iLine = SciCall_LineFromPosition(iCurPos);
|
||||
tr.chrg.cpMin = SciCall_PositionFromLine(iLine);
|
||||
tr.chrg.cpMax = min_cr(SciCall_GetLineEndPosition(iLine),(LONG)(tr.chrg.cpMin + COUNTOF(tchBuf2)));
|
||||
}*/
|
||||
tr.chrg.cpMax = min_cr(tr.chrg.cpMax, (DocPosCR)Sci_GetDocEndPosition());
|
||||
tr.chrg.cpMax = min_p(tr.chrg.cpMax, Sci_GetDocEndPosition());
|
||||
|
||||
size_t const len = ((size_t)tr.chrg.cpMax - (size_t)tr.chrg.cpMin);
|
||||
char* const pszText = AllocMem(len+1LL, HEAP_ZERO_MEMORY);
|
||||
@ -7857,12 +7857,11 @@ bool EditAutoCompleteWord(HWND hwnd, bool autoInsert)
|
||||
if (Settings.AutoCompleteWords || (autoInsert && !Settings.AutoCLexerKeyWords)) {
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
struct Sci_TextToFind ft = { { 0, 0 }, 0, { 0, 0 } };
|
||||
struct Sci_TextToFindFull ft = { { 0, 0 }, NULL, { 0, 0 } };
|
||||
ft.lpstrText = pRoot;
|
||||
ft.chrg.cpMax = (DocPosCR)iDocEndPos;
|
||||
|
||||
//DocPos iPosFind = SciCall_FindTextFull(SCFIND_WORDSTART, &ft);
|
||||
DocPos iPosFind = SciCall_FindText(SCFIND_WORDSTART, &ft);
|
||||
DocPos iPosFind = SciCall_FindTextFull(SCFIND_WORDSTART, &ft);
|
||||
PWLIST pwlNewWord = NULL;
|
||||
|
||||
while ((iPosFind >= 0) && ((iPosFind + iRootLen) < iDocEndPos)) {
|
||||
@ -7896,8 +7895,8 @@ bool EditAutoCompleteWord(HWND hwnd, bool autoInsert)
|
||||
}
|
||||
|
||||
ft.chrg.cpMin = (DocPosCR)iWordEndPos;
|
||||
//iPosFind = SciCall_FindTextFull(SCFIND_WORDSTART, &ft);
|
||||
iPosFind = SciCall_FindText(SCFIND_WORDSTART, &ft);
|
||||
iPosFind = SciCall_FindTextFull(SCFIND_WORDSTART, &ft);
|
||||
//iPosFind = SciCall_FindText(SCFIND_WORDSTART, &ft);
|
||||
}
|
||||
FreeMem(pwlNewWord);
|
||||
pwlNewWord = NULL;
|
||||
|
||||
@ -330,8 +330,7 @@ DeclareSciCallV0(SelectionDuplicate, SELECTIONDUPLICATE);
|
||||
DeclareSciCallV0(LineTranspose, LINETRANSPOSE);
|
||||
DeclareSciCallV0(MoveSelectedLinesUp, MOVESELECTEDLINESUP);
|
||||
DeclareSciCallV0(MoveSelectedLinesDown, MOVESELECTEDLINESDOWN);
|
||||
DeclareSciCallR2(FindText, FINDTEXT, DocPos, int, flags, struct Sci_TextToFind*, text);
|
||||
DeclareSciCallR2(FindTextFull, FINDTEXTFULL, DocPos, int, flags, struct Sci_TextToFind*, text);
|
||||
DeclareSciCallR2(FindTextFull, FINDTEXTFULL, DocPos, int, flags, struct Sci_TextToFindFull*, text);
|
||||
|
||||
// Operations
|
||||
DeclareSciCallV0(Cut, CUT);
|
||||
@ -344,7 +343,7 @@ DeclareSciCallV0(Cancel, CANCEL);
|
||||
DeclareSciCallV0(CopyAllowLine, COPYALLOWLINE);
|
||||
DeclareSciCallV2(CopyText, COPYTEXT, DocPos, length, const char*, text);
|
||||
DeclareSciCallR2(GetText, GETTEXT, DocPos, DocPos, length, const char*, text); // NULL: w/o terminating '\0' (SCI v515)
|
||||
DeclareSciCallR01(GetTextRangeFull, GETTEXTRANGEFULL, DocPos, struct Sci_TextRange*, textrange);
|
||||
DeclareSciCallR01(GetTextRangeFull, GETTEXTRANGEFULL, DocPos, struct Sci_TextRangeFull*, textrange);
|
||||
DeclareSciCallV0(UpperCase, UPPERCASE);
|
||||
DeclareSciCallV0(LowerCase, LOWERCASE);
|
||||
DeclareSciCallV2(ReplaceRectangular, REPLACERECTANGULAR, DocPos, length, const char *, text);
|
||||
|
||||
@ -2064,7 +2064,7 @@ void Style_SetBookmark(HWND hwnd, bool bShowMargin)
|
||||
//
|
||||
void Style_SetChangeHistory(HWND hwnd, bool bShowMargin)
|
||||
{
|
||||
SciCall_SetMarginWidthN(MARGIN_SCI_CHGHIST, (bShowMargin ? _GetMarkerMarginWidth(hwnd) : 0));
|
||||
SciCall_SetMarginWidthN(MARGIN_SCI_CHGHIST, (bShowMargin ? _GetMarkerMarginWidth(hwnd) + 4 : 0));
|
||||
}
|
||||
|
||||
|
||||
@ -2164,11 +2164,16 @@ void Style_SetMargin(HWND hwnd, LPCWSTR lpszStyle) /// iStyle == STYLE_LINENUMBE
|
||||
// --- Change History ---
|
||||
SciCall_SetMarginBackN(MARGIN_SCI_CHGHIST, clrMarginBack);
|
||||
SciCall_SetMarginSensitiveN(MARGIN_SCI_CHGHIST, false);
|
||||
SciCall_MarkerSetBack(SC_MARKNUM_HISTORY_MODIFIED, clrMarginBack);
|
||||
//SciCall_MarkerSetBack(SC_MARKNUM_HISTORY_REVERTED_TO_ORIGIN, clrMarginBack);
|
||||
//SciCall_MarkerSetBack(SC_MARKNUM_HISTORY_SAVED, clrMarginBack);
|
||||
//SciCall_MarkerSetBack(SC_MARKNUM_HISTORY_REVERTED_TO_MODIFIED, clrMarginBack);
|
||||
|
||||
// --- Code folding ---
|
||||
SciCall_SetMarginBackN(MARGIN_SCI_FOLDING, clrMarginBack);
|
||||
SciCall_SetMarginSensitiveN(MARGIN_SCI_FOLDING, true);
|
||||
|
||||
|
||||
int fldStyleMrk = SC_CASE_LOWER;
|
||||
Style_StrGetCase(wchBookMarkStyleStrg, &fldStyleMrk);
|
||||
if (fldStyleMrk == SC_CASE_UPPER) { // circle style
|
||||
|
||||
Loading…
Reference in New Issue
Block a user