1
0
Fork 0
Commit Graph

153 Commits (5aa4ad513506ce80ea28567361fd42b163e354a7)

Author SHA1 Message Date
rubidium42 f00564eeb2
Fix: String validation could leave invalid Utf8 encoded strings (#9096)
In case a character was encoded in multiple bytes, but required fewer bytes to be encoded, the first byte would be copied to the output leaving an invalid Utf8 encoded string. Later uses of the validated string would use the same decode logic, which would yield a question mark and just read a single byte, so nothing dangerous happened.
Furthermore, because the next byte would not be a first byte of an encoded Utf8 character, the last few valid characters could be removed by the validation as well.
2021-04-29 23:16:41 +01:00
rubidium42 5202869f0f Add: String functionality to trim spaces from C-style strings 2021-04-24 08:02:54 +02:00
Charles Pigott 9b800a96ed
Codechange: Remove min/max functions in favour of STL variants (#8502) 2021-01-08 11:16:18 +01:00
Michael Lutz 024a3f6259 Codechange: Use automatic memory management for language pack reading. 2020-12-27 13:19:25 +01:00
Michael Lutz 0c6e8a8123 Codechange: Store file search paths as std::string. 2020-12-27 13:19:25 +01:00
Marcus Calhoun-Lopez eeed3a7613 Fix: unbreak building with ICU on macOS
A symbol clash breaks building ICU on macOS, and although it isn't
necessary, it might as well be possible.
2020-06-05 14:47:33 +01:00
Michael Lutz 715aa67a9c Codechange: Use std::string in INI file parsing. 2020-05-21 20:02:34 +02:00
Michael Lutz c082f570ce Codechange: Use std::string when translating TTDP NewGRF string codes. 2020-05-21 20:02:34 +02:00
S. D. Cloudt 13cc8a0cee Cleanup: Removed SVN headers 2019-11-10 17:59:20 +00:00
Henry Wilson 7c8e7c6b6e Codechange: Use null pointer literal instead of the NULL macro 2019-04-10 23:22:20 +02:00
Michael Lutz fbc4cef180 Codechange: Use override specifier for text layout classes. 2019-04-09 22:45:15 +02:00
Henry Wilson c01a2e2a81 Codechange: Removed SmallVector completely 2019-03-26 20:15:57 +00:00
Henry Wilson ab711e6942 Codechange: Replaced SmallVector::[Begin|End]() with std alternatives 2019-03-26 20:15:57 +00:00
Henry Wilson a0f36a50e6 Codechange: Replaced SmallVector::Append() with std::vector::[push|emplace]_back() 2019-03-26 20:15:57 +00:00
Henry Wilson a690936ed7 Codechange: Replace SmallVector::Length() with std::vector::size() 2019-03-26 20:15:57 +00:00
Henry Wilson bfd79e59dc Codechange: Replace SmallVector::Clear() with std::vector::clear() 2019-03-26 20:15:57 +00:00
Patric Stout 36105841b9 Codechange: ICU_SORT is in reality ICU_I18N (according to their CMake files)
By naming it in a different way, things get a bit confusing.
Especially if we are switching to CMake, which autodetects these
things, we need to use the name the authors of ICU gave it; not
our interpertation of that name.
2019-03-11 10:16:00 +01:00
glx c540d72445 Fix: [Win32] WIN32 may not be defined, always prefer the compiler predefined macro _WIN32 2018-12-27 18:09:16 +01:00
Michael Lutz 4bf216993a Add: [OSX] Native text caret handling. 2018-12-08 20:13:27 +01:00
Michael Lutz 8d7cd6a526 Add: [OSX] Native natural sort implementation. 2018-12-08 20:13:27 +01:00
Charles Pigott 52ed3bcbaa Remove: A few bits of dead code 2018-10-31 12:41:49 +01:00
Charles Pigott e0c0394e37 Fix: Remove various dead or unnecessary assignments 2018-10-31 12:41:49 +01:00
Michael Lutz eec3f40931 Change: [Win32] Use Uniscribe instead of ICU for text caret handling.
This removes the need for the ICU lib on Windows.
2018-06-06 21:37:09 +02:00
Michael Lutz f4394debdc Add: [Win32] Native natural sort implementation. 2018-06-06 21:37:09 +02:00
michi_cc 35b77450f8 (svn r27380) -Fix: [Win32] Compilation with MSVC2015. 2015-08-10 20:21:29 +00:00
rubidium 562c269770 (svn r27377) -Codechange: use the pkg-config files of ICU as well. Since they are split into separate libraries it becomes possible to split RTL support for natural sorting, although the effect will be minimal 2015-08-09 13:54:17 +00:00
rubidium 69fac508c3 (svn r27367) -Codechange: make a distinction between the layouting part of ICU (lx) or the sorting/collation part of ICU (i18n) 2015-08-09 12:33:27 +00:00
rubidium d534c80e94 (svn r27020) -Cleanup: some coding style consistency improvements (mostly spaces) 2014-10-15 18:31:37 +00:00
rubidium db8d208bfc (svn r26507) -Cleanup: remove now unused custom strndup implementation 2014-04-25 15:17:17 +00:00
rubidium e61fe21237 (svn r26506) -Codechange: replace most of vsnprintf with vseprintf 2014-04-24 19:51:45 +00:00
rubidium 99452c51ce (svn r26500) -Cleanup: remove unused snprintf implementation 2014-04-24 18:40:16 +00:00
rubidium 382ca0941f (svn r26498) -Add: method for duplicating strings with similar behaviours as strecpy and strecat; give end pointer instead of a size 2014-04-24 18:21:32 +00:00
frosch ef4c2ce031 (svn r26485) -Codechange: Replace ttd_strlcpy and ttd_strlcat with strecpy and strecat. 2014-04-23 20:44:42 +00:00
rubidium 0463dbdc9e (svn r26482) -Codechange: add an include that allows us to undefine/redefine "unsafe" functions to prevent them from being used, and thus having to care about certain aspects of their return values 2014-04-23 20:13:33 +00:00
rubidium ddc35bc252 (svn r26472) -Cleanup: pointless instance variable 2014-04-20 14:17:13 +00:00
fonsinchen d0aa98ef7d (svn r26384) -Fix [FS#5924]: Return correct values from ICU iterators in case of leading or trailing whitespace 2014-03-01 14:14:41 +00:00
rubidium 5e3aa72855 (svn r26124) -Fix: make sure all members of the default string iterator are initialised 2013-11-26 13:42:09 +00:00
rubidium cdd6752ead (svn r25952) -Fix [FS#5719]: do not skip numbers when skipping spaces and other sorting 'improving' characters 2013-11-08 21:15:20 +00:00
michi_cc 76367f6bf1 (svn r25653) -Add: Caret movement by words for CJK languages. 2013-08-05 20:35:31 +00:00
michi_cc e7dc14b25a (svn r25652) -Fix: Improve text caret movement for complex scripts. 2013-08-05 20:35:27 +00:00
rubidium 4c443bce5c (svn r25555) -Fix [FS#5632]: [Script] Texts from scripts were not validated before they were shown, causing an assertion to trigger 2013-07-04 16:36:47 +00:00
alberth 631540c400 (svn r25527) -Fix[FS#5621]: strndup should not examine strings beyond its upper limit. 2013-06-30 08:29:51 +00:00
rubidium 7c0f34130c (svn r25454) -Remove/Fix/Cleanup: SETX(Y) does not work at all with other than default fonts, so get rid of it 2013-06-24 18:39:19 +00:00
frosch 3e02890b73 (svn r24983) -Change: Apply the same name sorting rules to content and NewGRF list as for the server list. 2013-02-09 17:31:07 +00:00
planetmaker c24374f99c (svn r24900) -Fix [FS#5389]: Comments with typos (most fixes supplied by Eagle_rainbow) 2013-01-08 22:46:42 +00:00
yexo 2c99805117 (svn r23816) -Fix (r23635, r23805): make SCC_ENCODED the first entry in the StringControlCode enum since it's value is not allowed to change 2012-01-16 22:29:25 +00:00
smatz bcd3f2bb59 (svn r23706) -Codechange: prevent 'unknown command' doxygen errors 2012-01-01 17:36:19 +00:00
truebrain 5cda1d7c90 (svn r23603) -Add: support for control commands in strings, in both network and safe/load (Rubidium) 2011-12-19 20:50:44 +00:00
rubidium fefe22b4aa (svn r23590) -Codechange: make the string validation settings better expandable 2011-12-18 18:37:54 +00:00
alberth d55b380b69 (svn r22669) -Codechange: For non-windows, only test for file existence again if strtolower actually changed the name. 2011-07-16 18:43:22 +00:00
rubidium 5a620d1c65 (svn r22406) -Document: some more "random-ish" tidbits 2011-05-01 19:51:52 +00:00
rubidium 59e42ea178 (svn r22177) -Fix: make sure the right endianness is chosen with cross-compiling, and strndup is available in the binary for more exotic platforms 2011-03-03 21:43:24 +00:00
rubidium 9ca4b629cd (svn r21846) -Codechange: move documentation towards the code to make it more likely to be updated [o-s]. 2011-01-18 23:09:43 +00:00
rubidium 440a529701 (svn r21404) -Add: method for getting the length of an Utf8 string in characters 2010-12-05 22:17:25 +00:00
terkhen 4b944cb13e (svn r21343) -Add: Function that compares strings using case insensitive natural sort. 2010-11-27 22:47:29 +00:00
rubidium 17b514ccd1 (svn r21133) -Add: function to check the validity of a string (without modifying it) 2010-11-10 17:49:14 +00:00
frosch 4bd32799f1 (svn r20286) -Codechange: Unify end of doxygen comments. 2010-08-01 19:44:49 +00:00
frosch ed4f806f1d (svn r20283) -Codechange: Unify start of doygen comments. 2010-08-01 19:22:34 +00:00
rubidium 80cc566553 (svn r20220) -Fix [FS#3974]: strip non-printable characters before showing it in an edit box, so when renaming a vehicle type you won't get the "SETX stuff" that some NewGRFs use 2010-07-25 23:14:59 +00:00
alberth 604e56adc2 (svn r20025) -Doc: Fix/add comments to let Doxygen know about the documentation. 2010-06-27 09:05:10 +00:00
rubidium e3df7caf18 (svn r19874) -Fix [FS#3845]: NetBSD compilation was still broken in some cases (Krille) 2010-05-21 15:56:19 +00:00
rubidium 8aad995e32 (svn r19703) -Add: hexadecimal string filter 2010-04-24 07:31:58 +00:00
rubidium 3c5d19e411 (svn r19158) -Fix (r19149): MSVC 64 bits compile warning 2010-02-18 01:10:04 +00:00
rubidium a6112670d0 (svn r19149) -Codechange: make our vsnprintf implementation for Windows more POSIX compliant (adf88) 2010-02-17 15:07:09 +00:00
rubidium 1b0e78c588 (svn r19148) -Fix [FS#3627]: [v]seprintf should return the number of added characters excluding '\0' on truncation (adf88) 2010-02-17 13:55:08 +00:00
glx 918b3aff5e (svn r18919) -Fix (r15371): strcasestr() return should not be const 2010-01-26 14:04:56 +00:00
rubidium a5d005dd53 (svn r17920) -Codechange: add a 'filter' for numbers+spaces and use it for the NewGRF parameter list 2009-10-31 14:06:16 +00:00
rubidium 7fbc33dae1 (svn r17248) -Fix: add GPL license notice where appropriate 2009-08-21 20:21:05 +00:00
rubidium dc161c72e0 (svn r15963) -Fix [FS#2814]: (v)seprintf chopped of strings one character earlier than necessary. 2009-04-06 10:05:36 +00:00
rubidium b25a4f8231 (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too 2009-03-15 00:32:18 +00:00
rubidium 86ca408d46 (svn r15626) -Fix [FS#2698]: UTF8 string handling could cause buffer overruns. 2009-03-06 01:23:25 +00:00
smatz c3a7e6b693 (svn r15625) -Codechange: remove unneeded assert 2009-03-06 00:41:58 +00:00
rubidium 13bc604fde (svn r15537) -Fix (r5215): don't allow special sprite characters (e.g. the ship sprite) as characters in input like filenames or text that is sent over the network. 2009-02-21 00:47:59 +00:00
rubidium cecc3863cd (svn r15376) -Fix [FS#2608] (r15371): OSX/BSD also seems to define strcasecmp under some circumstances. 2009-02-06 15:53:48 +00:00
rubidium 35c5da08c5 (svn r15371) -Codechange: add an implementation of strcasestr for when _GNU_SOURCE isn't defined. 2009-02-06 11:58:52 +00:00
glx 6d6e2232ea (svn r15316) -Fix [NoAI]: ignore unprintable chars when returning a string to squirrel 2009-02-02 13:46:26 +00:00
smatz 0d3f5e6e74 (svn r15299) -Cleanup: remove many redundant includes 2009-01-31 20:16:06 +00:00
rubidium 07e135547e (svn r15135) -Fix/Change: allow str_validate (part of receiving strings from the network) to pass newlines instead of replacing them with question marks, but only when asked to do so. 2009-01-18 13:12:57 +00:00
rubidium 11da45ee55 (svn r14949) -Cleanup: pointer coding style 2009-01-10 00:31:47 +00:00
skidd13 6d94be75e9 (svn r14557) -Codechange: Remove a redundant line of code 2008-11-02 11:41:13 +00:00
skidd13 38efdc8222 (svn r14546) -Codechange: Unify string(cpy|cat) functions
-Doc: string(cpy|cat) functions
2008-10-29 16:30:41 +00:00
rubidium da0a0ef8ca (svn r14541) -Fix (r14540): mingw didn't like it :( 2008-10-28 15:47:42 +00:00
rubidium 0d254e8914 (svn r14540) -Codechange: introduce [v]seprintf which are like [v]snprintf but do return the number of characters written instead of the number of characters that would be written; as size_t is unsigned substraction can cause integer underflows quite quickly. 2008-10-28 14:42:31 +00:00
glx 2ddb86eea5 (svn r14154) -Fix (r14153): strndup is a GNU extension, so it doesn't exist on all platforms 2008-08-24 17:02:21 +00:00
rubidium d03994098b (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description. 2008-05-06 15:11:33 +00:00
rubidium d4e6a6bf57 (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h. 2008-01-13 01:21:35 +00:00
rubidium a3ccdcea36 (svn r11777) -Codechange: split the string header and make do not include it when it's not necessary. 2008-01-07 14:23:25 +00:00
glx 6f7f4adffc (svn r11744) -Codechange: don't redefine snprintf when using MinGW Runtime 3.14 or superior, as it now have snprintf() and vsnprintf conform to C99 2008-01-02 18:42:51 +00:00
rubidium 429521a7d1 (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h' 2007-12-25 11:26:07 +00:00
rubidium bf98e25e43 (svn r11691) -Codechange: move+rename helpers.hpp and only include it when it is really needed. 2007-12-25 09:48:53 +00:00
rubidium 01e20c9140 (svn r11674) -Codechange: refactor some functions out of macros.h into more logical locations. 2007-12-21 19:21:21 +00:00
skidd13 71c4325c50 (svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style 2007-11-19 21:02:30 +00:00
rubidium 197245eefe (svn r10566) -Fix [FS#1025]: a NewGRF could have a information message that is too long for the internal buffers to handle. We should not crash on such a case even though the message is too big for the window anyway. 2007-07-14 22:37:40 +00:00
belugas dfe5533db6 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near 2007-04-04 01:35:16 +00:00
Darkvater 3b3c7554b7 (svn r9083) -Codechange: Be more lenient when trimming UTF-8 strings and don't terminate the string when an invalid encoding is encountered, but only focus on maximum length. 2007-03-10 00:26:19 +00:00
tron e092b2d8c7 (svn r9015) -Fix
NL at EOF
2007-03-05 05:03:28 +00:00
Darkvater 915ae8ffc2 (svn r9012) -Fix/Feature (UTF8): When cutting strings into multiple lines also take into consideration whitespace characters of more than 1 byte length (eg IDEOGRAPHIC SPACE, IsWhitespace() function). When trimming such strings, account for multiple-byte long sequences so use *Utf8PrevChar(v) = '\0'.
-Codechange: Add a function Utf8TrimString() that properly trims a string to an UTF8 encoding seperation instead of somewhere in the wild (and use it in the chat area)
2007-03-05 00:45:56 +00:00
Darkvater 5ed33e549e (svn r8093) -Codechange: Add a function to get a string representation of an MD5SUM and use it. 2007-01-13 13:47:57 +00:00
Darkvater c09b7e7fac (svn r8090) -[win32] Fix (r8089): for *nprintf 'ret = count' NOT 'ret = 0'... 2007-01-13 13:13:32 +00:00
Darkvater 120f57b865 (svn r8089) -[win32] MS-borkedness: All *nprintf functions are broken, but we didn't test to fix it ourselves when 'len = count'. 2007-01-13 13:06:18 +00:00