Notepad++ recently committed a breaking change to the typedef of Scintilla's Sci_PositionCR message, which now expands to 8 bytes on x86_64 architecture: https://community.notepad-plus-plus.org/topic/22471/recompile-your-x64-plugins-with-new-header. 8.3 is the first GA release to be compiled with it.
All published versions of AnalysePlugin still use the old typedef:
// trunk/scintilla/include/Sci_Position.h
typedef long Sci_PositionCR;
Calls to the SCI_GETTEXTRANGE API now return 64-bit values in x64 builds of N++. ScintillaEditView::getText makes this call, and tries to store the returned character ranges in a long:
// trunk/PowerEditor/src/ScitillaComponent/ScintillaEditView.cpp
void ScintillaEditView::getText(char *dest, size_t start, size_t end) const
{
Sci_TextRange tr;
tr.chrg.cpMin = static_cast<long>(start);
tr.chrg.cpMax = static_cast<long>(end);
tr.lpstrText = dest;
execute(SCI_GETTEXTRANGE, 0, reinterpret_cast<LPARAM>(&tr));
}
This code path will cause an access violation that crashes 64-bit N++, as reported here: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/11152
Anonymous
bro do you even fix?
yes, on the way.
Hi All,
I finally was able to finish 1.13-R49 fixing this bug.
See https://sourceforge.net/projects/analyseplugin/files/binaries/v01.13-R49/
Please, let me know when you find any issues.
regards, Mattes