the C structure sem (also TSemaphore record) used in cthreads unit
inside cIntSemaphoreInit function via
a GetMem(sizeof(TSempahore). sem was a simple cint
value which lead to memoryt overwriting past end of
allocated memory in sem_XXX calls.
git-svn-id: trunk@19176 -
* moved console io on embedded systems into a seperate unit, this unit might setup input/output e.g. to be redirected to a serial port
* cleanup of the embedded system unit
git-svn-id: trunk@19168 -
- removed {$ifdef FPC_HAS_RIP_RELATIVE}, it is obsolete because rip-releative referencing is supported in at least two releases by now.
+ added nostackframe to simple assembler procedures
* Inclocked, Declocked: do not duplicate entire procedures, Win64 and Linux versions differ in a single instruction.
git-svn-id: trunk@19162 -
- don't parse '(' token after the type declaration inside the type block
- replace parse of "string<codepage>" to "type AnsiString(codepage)" for delphi compatibility
- fix tests to use "type AnsiString(codepage)"
git-svn-id: trunk@19148 -
fpc_ansistr_compare_equal(). "make cycle" now works under Linux, but
there is probably still a bug somewhere because I don't think that the
compiler should ever trigger the code path the contained this bug
git-svn-id: trunk@19139 -
rtl: change UTF8Decode, UTF8Encode, AnsiToUTF8, UTF8ToAnsi to use RawByteString as arguments/result for compatibility with the old code and also with delphi
git-svn-id: trunk@19128 -
*In normal procedure "var" and "out" RawByteString parameters does not accept other string types. Procedures with
"compilerproc" directive or the newly added "rtlproc" directive accept that. Please note that it is up to the
procedure coder to ensure the correctness of the code page in that case. The new directive is needed to handle
the RTL procedures/functions that are not marked as "compilerproc" such as "UniqueString", "Insert" and "Delete".
*Correct "fpc_ansistr_concat" to handle code page correctly.
*Default "ansitring" type is now created with code page set to "0" instead of "65535". Before that change it was
impossible to distinguish a "RawByteString" with the default "ansistring". At runtime "ansistring" variable'code
page is set to DefaultSystemCodePage
*UniqueString flavor of "SetLength" has been updated to release memory when shrinked to at least 50%, like ansitring
does.
git-svn-id: trunk@19118 -
Patch from Inoussa:
* rtl/inc/astrings.inc
** "fpc_AnsiStr_Concat_multi" : add "cp" parameter. If the "DestS" variable is "nil" this code page
is use in order not to loose the declared code page of the original (result)variable.
** "fpc_AnsiStr_Compare" : modify to compare taking care of the code page of the arguments.
** "fpc_AnsiStr_Compare_equal" : modify to compare taking care of the code page of the arguments.
** "fpc_AnsiStr_SetLength" : add "cp" parameter. If the "S" variable is "nil" this code page
is use in order not to loose the declared code page of the original (result)variable.
* rtl/inc/systemh.inc
** add "SetCodePage" prototype.
git-svn-id: trunk@19114 -
- fix return type of StringCodePage functions from Word to TSystemCodePage
- add SetMultiByteConversionCodePage procedure (which just change the DefaultSystemCodePage constant)
git-svn-id: trunk@19095 -
- a set of rtl changes from AnsiString to RawByteString to various conversion functions
- a test which proves output in cp1251 and cp866 codepages (standard for Russian windows)
git-svn-id: trunk@19093 -
+ Win32Unicode2AnsiMove and Win32Wide2AnsiMove support code page parameter
+ Win32Ansi2UnicodeMove and Win32Ansi2WideMove support code page parameter
+ code page parameter added for several compilerprocs
* unified more code between win32 and win64 (widestring conversion routines
git-svn-id: trunk@19082 -
+ support parsing of strings with code page specification
+ added encoding and elementsize field to ansi- and unicodestring records
+ some basic rtl support routines for encoding aware strings
+ DefaultSystemCodePage
+ DefaultUnicodeCodePage
+ ppu writing/loading of code page aware strings
git-svn-id: trunk@19080 -