notepad-plus-plus/scintilla
Don Ho 88ee2eddb0 Fix the crash regression due to the array size increase
LexerStylerArray contains a MAX_LEXER_STYLE-element array (currently 100) of LexerStyler objects. Every one of them in turn via inheritance from StyleArray contains a SCE_STYLE_ARRAY_SIZE-element array (I tested with 99) of Style objects each at least 56 bytes in size. This in my test case requires over 550k of memory, and if LexerStylerArray is allocated on stack, the stack becomes corrupted. (Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/10454#issuecomment-908732786)

Inline arrays are a part of an object and increase its size while std::vector uses memory from the heap and stores internally only a pointer to a chunk of memory, thus the size of an object with a vector is substantially smaller than the one with an inline array. (Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/10454#issuecomment-908780106)

Fix #10454, fix #10206
2021-08-31 01:38:55 +02:00
..
bin Upgrade Scintilla - integrate boost's PCRE in 64 build 2019-05-08 10:43:30 +02:00
cocoa Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
doc Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
gtk Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
include Fix the crash regression due to the array size increase 2021-08-31 01:38:55 +02:00
lexers Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
lexilla Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
lexlib Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
qt Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
scripts Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
src Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
test Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
win32 Remove "Unicode" from build configuration names 2021-07-29 15:14:55 +02:00
CONTRIBUTING
License.txt
README Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
delbin.bat Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
tgzsrc Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
version.txt Upgrade Scintilla from v4.2.0 to v4.4.6 2021-02-21 19:14:40 +01:00
zipsrc.bat

README

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

README for building of Scintilla and SciTE

Scintilla can be built by itself.
To build SciTE, Scintilla must first be built.

Lexers can be either compiled into Scintilla or built separately into a Lexilla
shared library.
A separate Lexilla is the preferred option and will become the only supported
direction in Scintilla 5.0.
See lexilla/src/README for information on building Lexilla.

*** GTK+/Linux version ***

You must first have GTK+ 2.24 or later and GCC (7.1 or better) installed.
Clang may be used by adding CLANG=1 to the make command line.
Other C++ compilers may work but may require tweaking the make file.
Either GTK+ 2.x or 3.x may be used with 2.x the default and 3.x
chosen with the make argument GTK3=1.

To build Scintilla, use the makefile located in the scintilla/gtk directory
	cd scintilla/gtk
	make
	cd ../..

To build and install SciTE, use the makefile located in the scite/gtk directory
	cd scite/gtk
	make
	sudo make install

This installs SciTE into $prefix/bin. The value of $prefix is determined from
the location of Gnome if it is installed. This is usually /usr if installed
with Linux or /usr/local if built from source. If Gnome is not installed
/usr/bin is used as the prefix. The prefix can be overridden on the command
line like "make prefix=/opt" but the same value should be used for both make
and make install as this location is compiled into the executable. The global
properties file is installed at $prefix/share/scite/SciTEGlobal.properties.
The language specific properties files are also installed into this directory.

To remove SciTE
	sudo make uninstall

To clean the object files which may be needed to change $prefix
	make clean

The current make file only supports static linking between SciTE and Scintilla.


*** Windows version ***

A C++ 17 compiler is required.
Visual Studio 2017 is the development system used for most development
although Mingw-w64 7.1 is also supported.

There are versions of Scintilla with lexers (SciLexer.DLL) and without lexers
(Scintilla.DLL). Make builds both versions.

To build Scintilla, make in the scintilla/win32 directory
		cd scintilla\win32
GCC:		mingw32-make
Visual C++:	nmake -f scintilla.mak
		cd ..\..

To build SciTE, use the makefiles located in the scite/win32 directory
		cd scite\win32
GCC:		mingw32-make
Visual C++: 	nmake -f scite.mak

An executable SciTE will now be in scite/bin.

*** GTK+/Windows version ***

Mingw-w64 is known to work. Other compilers will probably not work.

Only Scintilla will build with GTK+ on Windows. SciTE will not work.

Make builds both a static library version of Scintilla with lexers (scintilla.a) and
a shared library without lexers (libscintilla.so or or libscintilla.dll).

To build Scintilla, make in the scintilla/gtk directory
	cd scintilla\gtk
	mingw32-make

*** macOS Cocoa version ***

Xcode 9.2 or later may be used to build Scintilla on macOS.

There is no open source version of SciTE for macOS but there is a commercial
version available through the App Store.

There are versions of Scintilla.framework with lexers (ScintillaFramework) and
without lexers (Scintilla).

To build Scintilla, run xcodebuild in the scintilla/cocoa/ScintillaFramework or 
scintilla/cocoa/Scintilla directory

        cd cocoa/Scintilla
		or
        cd cocoa/ScintillaFramework

	xcodebuild

*** Qt version ***

See the qt/README file to build Scintilla with Qt.