summaryrefslogtreecommitdiff
path: root/core/fxcrt
AgeCommit message (Collapse)Author
2016-05-19Fix a potential nullptr deref in CFX_MapPtrToPtr.thestig
And also in CFX_PtrList. BUG=596528 Review-Url: https://codereview.chromium.org/1991123002
2016-05-19Fix leak in CPDF_StreamContentParser::AddTextObject().thestig
... by using STL containers in more places. Remove dead / duplicate code as well. BUG=603904 Review-Url: https://codereview.chromium.org/1998583002
2016-05-19Correctly check for overflow in FX_atonum.dsinclair
Instead of the existing method, use the CheckedNumeric class to check for overflow during conversion. BUG=chromium:596526 Review-Url: https://codereview.chromium.org/1992023003
2016-05-18Remove c_str() from widestring checksum variant.tsepez
Brings it back in line with bytestring version. Review-Url: https://codereview.chromium.org/1985223002
2016-05-18Pass objects instead of strings for undo/redo records.dsinclair
Currently the Undo/Redo records are serialized as byte strings and stored into a CFX_ByteStringArray. They are deserialized when used. This CL removes the serialization and stores the objects in a deque of unique pointers. Review-Url: https://codereview.chromium.org/1980293004
2016-05-16Fix the code that causes warningsweili
These are the left or newly added code which causes compilation warnings of "signed and unsigned comparison". Need to fix them before I re-enable the warning flag. BUG=pdfium:29 Review-Url: https://codereview.chromium.org/1986533002
2016-05-16Fix binding of null pointer dereference to reference typechromium/2740chromium/2739hans
A new Clang warning complains about this, and especially for the function returning a reference, it seems like a bad idea. BUG=none Review-Url: https://codereview.chromium.org/1986453002
2016-05-13Make CFX_ByteString(const CFX_ByteStringC&) explicit.tsepez
Add missing helper function to CFX_ByteTextBuf to avoid the anti-pattern CFX_ByteString(sBuf.AsStringC()), using the name "Make" to indicate there's an allocation going on in this case. Change some method arguments to take pre-existing ByteStrings where possible. Review-Url: https://codereview.chromium.org/1977093002
2016-05-13Make CFX_WideString(const CFX_WideString&) explicit.tsepez
BUG= Review-Url: https://codereview.chromium.org/1979723003
2016-05-13Templatize CFX_{Byte,Wide}StringCtsepez
Review-Url: https://codereview.chromium.org/1874773002
2016-05-12Add CFX_ByteStringC::CharAt() to avoid c_str() and casts.tsepez
Most of the time, we want to operate on chars as if they were unsigned, but there are a few places where we need the default (questionably signed) values. Consolidate the casting in a single place rather than forcing callers to get a char* ptr. BUG=pdfium:493 Review-Url: https://codereview.chromium.org/1972053003
2016-05-12Fix comment in fx_string.htsepez
Previous CLs have removed or marked explicit the constructors which allowed bad constructs to compile. I now get an error: candidate constructor not viable: expects an l-value for 1st argument when called as indicated in the comment. Review-Url: https://codereview.chromium.org/1975983002
2016-05-11Add much-needed Find() method for CFX_*StringCtsepez
BUG=pdfium:493 Review-Url: https://codereview.chromium.org/1968233002
2016-05-11Use bytestringC rather than raw ptr/len pairs in syntax parsertsepez
In particular, we seek to make more use of the .Mid() (substr) method to make these. Precursor to removing c_str() calls. BUG=pdfium:493 Review-Url: https://codereview.chromium.org/1966293002
2016-05-06CFX_ArabicChar contains only static methods, no need to instantiate.chromium/2733chromium/2732chromium/2731chromium/2730tsepez
Review-Url: https://codereview.chromium.org/1954593004
2016-05-04Return bool rather than bitwise-and for FX_BOOLtsepez
Investigate results of: git grep -ni 'return [(]*[a-z0-9_]* &[^&]' git grep -ni 'BOOL.*= [(]*[a-z0-9_]* &[^&]' Review-Url: https://codereview.chromium.org/1951653002
2016-05-02Replace CFX_PtrArray with typesafe CFX_ArrayTemplate, part 11tsepez
Last part. Remove CFX_PtrArray typedef. Review-Url: https://codereview.chromium.org/1941863002
2016-04-27More IFX_ interface cleanup.dsinclair
Remove IFX_FontProvider, IFX_FontSourceEnum, IFX_SAXReader and IFX_SAXReaderHandler. Review-Url: https://codereview.chromium.org/1930533002
2016-04-27Standardize on ASSERT.dsinclair
There are currently three ways to assert in the code (ASSERT, FXSYS_assert and assert). This CL standardizes on ASSERT. The benefit of ASSERT is that it can be overridden if the platform requies and we can pickup the Chromium version if it has already been defined in the build. This does change behaviour. Currently FXSYS_assert is always defined but ASSERT is only defined in debug builds. So, the FXSYS_assert's would fire in Release builds. That will no longer happen. BUG=pdfium:219 Review-Url: https://codereview.chromium.org/1914303003
2016-04-26CFX_ByteString::Reserve(), ReleaseBuffer() fixes.tsepez
Also identical fixes for CFX_WideString. Reserve() on an empty string would not actually reserve a buffer. Currently unused, but there are places where this would really help. ReleaseBuffer() would rarely return memory to the system, since it would short-circuit thinking it could operate in place. Tune the algorithm slightly so that we hold on when the savings is small. Bounds check release buffer args rather than just asserting. Add tests for all of these. Review URL: https://codereview.chromium.org/1916303004
2016-04-25Pass CFX_*StringCs to FX_HashCode_GETA and _GETW hash functions.tsepez
Too many calls were of the form fn(x.c_str(), x.GetLength()) which is an anti-pattern given the StringC classes which tie these together. There are a few places where explicit CFX_*StringCs are constructed, but this can be avoided by changing the args to these functions in the same manner. Removed String_ from name of functions since it added little value. Also removed default argument. Review URL: https://codereview.chromium.org/1919563002
2016-04-22Change the code to avoid three unit test failures on release buildweili
We have three failed unit tests -- FX_AllocOverflow(), FX_AllocOverflow2D(), and FX_TryAllocOverflow() on Linux and Mac release builds, because Clang aggressively optimizes the code. Adding some usage of the return value of a function can avoid the function being optimized away by Clang. Review URL: https://codereview.chromium.org/1915693002
2016-04-21Replace CFX_RectArray with std::vector<CFX_FloatRect>tsepez
Use RVO now that we use an array type compatible with it. Review URL: https://codereview.chromium.org/1906903002
2016-04-21Make CFX_BasicArray non-copyable.tsepez
Its implicit copy constructor is unsafe, since it ends up sharing the underlying data. Fix one place where it was being unintentionally invoked. Review URL: https://codereview.chromium.org/1908073003
2016-04-21Assert that CFX_ strings are pointer-size.tsepez
The principle has been implicit in the implementation, but make it obvious for future generations. Review URL: https://codereview.chromium.org/1904143002
2016-04-20Inline CFX_WideString::c_str.dsinclair
This was causing issues at one point with the GN build but seems to have been resolved in the meantime. Review URL: https://codereview.chromium.org/1907563002
2016-04-20Standalone GN build.dsinclair
This CL setups up a standalone GN build. You'll need to set gn args similar to: use_goma = true clang_use_chrome_plugins = false pdf_enable_xfa = true pdf_enable_v8 = true pdf_is_standalone = true The third_party/pymock files are needed to make git cl upload work correctly. BUG=pdfium:106 Review URL: https://codereview.chromium.org/1904563002
2016-04-19Remove a few more char* members from structs/classes.tsepez
This is a result of looking for the anti-paterns /char\*\sm_/ and /m_.*=.*\.c_str/ which indicate that a class may be using the contents of a string without extending the lifetime of the underlying storage. Along the way, change to uint8_t in fx_dib; this is unrelated but avoids grep hits (it is binary, not chars anyways). Also remove two string operators that make it easy to assign in a manner that does not extend contents lifetime. Review URL: https://codereview.chromium.org/1902953002
2016-04-14Still more comments about stringstsepez
TBR=thestig@chromium.org Review URL: https://codereview.chromium.org/1888843004
2016-04-14Update comments about string constructorstsepez
TBR=thestig@chromium.org Review URL: https://codereview.chromium.org/1887003003
2016-04-14Rename CFX_ByteTextBuf::GetByteString() to AsStringC().tsepez
Do the same for CFX_WideTextBuf as well. The name is confusing because these return CFX_ByteStringC, not CFX_ByteString. The AsStringC naming gives parallelism with the string types themselves, and may help to indicate that the result is only good for the lifetime of the object being operated upon. Review URL: https://codereview.chromium.org/1886263003
2016-04-14Replace calls to deprecated CFX_{Wide,Byte}String::Empty()tsepez
Use the more standard name "clear()" instead. Review URL: https://codereview.chromium.org/1888103002
2016-04-13Remove implicit cast from CFX_WideString to (const wchar_t*)tsepez
BUG= Review URL: https://codereview.chromium.org/1882043004
2016-04-13Remove implicit cast from CFX_ByteString to (const char*).tsepez
BUG= Review URL: https://codereview.chromium.org/1885973002
2016-04-12Cleanup various IFX_ text interfaces.dsinclair
This CL removes IFX_ArabicChar, IFX_RTFBreak, IFX_TxtBreak, IFX_WordBreak, IFX_FormatString, and IFX_GSUBTable. References were updated to be the concrete classes. The CFX_GSUBTable was also removed as it is unused. BUG=pdfium:468 Review URL: https://codereview.chromium.org/1882213002
2016-04-11Make CFX_{Byte,Wide}String::Remove() no-touch if possibletsepez
Don't try to copy the string until we are sure we need to change it. Review URL: https://codereview.chromium.org/1877993002
2016-04-11Avoid copying in TrimRight() and TrimLeft() if possible.tsepez
Make Byte and Wide code identical while at it. Review URL: https://codereview.chromium.org/1877553002
2016-04-08Make converstion explicit from CFX_ByteString to uint8_t*tsepez
BUG= Review URL: https://codereview.chromium.org/1868293002
2016-04-08Rename both As{Byte,Wide}StringC() helpers to AsStringC().tsepez
The naming is redundant given the base type, and will stand in the way of consolidating Byte and Wide code. BUG= Review URL: https://codereview.chromium.org/1862123003
2016-04-08Remove CFX_ByteString::Load() and operator= for CFX_ByteTextBuftsepez
The few places these are called are better served by explicit calls to CFX_ByteString() itself. This helps make Byte and Wide strings more similar. Also prevents fx_string.h from having any knowledge of fx_basic.h's ByteTextBuf class. Review URL: https://codereview.chromium.org/1870043003
2016-04-08Make CFX_WideString::FromLocal() take a CFX_ByteStringC argtsepez
It doesn't persist the string beyond the duration of the call, hence it should take the *StringC variant. Doing so avoids some allocs by changing to the *StringC ctor in a few places, at the cost of some explicit .ToByteStringC() calls (which are cheap). Review URL: https://codereview.chromium.org/1862953004
2016-04-06Make wide strings use StringData templatetsepez
Shuffled the order of methods in fx_basic_wstring.cpp to match those in fx_basic_bstring.cpp. The way to review this patch is to diff those two files against each other. They are beginning to converge. Re-ordered some parameters in Concat() so that the string comes before its length. It feels wrong otherwise. Review URL: https://codereview.chromium.org/1846793002
2016-04-06Remove CFX_SegmentedArray.tsepez
Recent changes appear to have made this unused. Review URL: https://codereview.chromium.org/1864813003
2016-04-06Rename FX_SAFE_DWORD to FX_SAFE_UINT32dsinclair
We removed the FX_DWORD typedef in favour of uint32_t. This CL cleans up the FX_SAFE_DWORD naming to match. BUG=pdfium:81, pdfium:470 Review URL: https://codereview.chromium.org/1861403002
2016-04-06Make CFX_WideString::FromUTF8() take a CFX_ByteStringC argument.tsepez
Methods that take string arguments and do not persist them should take *StringC types as argument rather than discrete ptr/len args. Avoids a number of implicit casts from CFX_ByteString to char*. BUG= Review URL: https://codereview.chromium.org/1861183002
2016-04-06Rename CFX_WideStringC::raw_str() to c_str()tsepez
No functional change intended. This difference in naming is standing in the way of consolidating some of the string code between Wide and Byte strings. The Wide code wants to call raw_str() in exactly the same spots that the Byte code calls c_str(). This makes sense, because in both places we get a character type back, and not a uint*_t type. If WideStringC had a raw_str() method, it would have to return uint32_t or similar. R=dsinclair@chromium.org Review URL: https://codereview.chromium.org/1863593004
2016-04-05Make StringData a templated class.tsepez
First step in making the same changes to CFX_WideString that we just made to CFX_ByteString. Review URL: https://codereview.chromium.org/1844073003
2016-04-05Make down-conversion explicit from CFX_Widetring to CFX_WideStringC.tsepez
Companion to https://codereview.chromium.org/1853233002 BUG= Review URL: https://codereview.chromium.org/1857073002
2016-04-05Rename GetCStr and GetPtr to match CFX_ByteString.dsinclair
This CL updates CFX_ByteStringC to use the more common c_str and raw_str instead of GetCStr and GetPtr. Review URL: https://codereview.chromium.org/1857713003
2016-04-04Make down-conversion explicit from CFX_ByteString to CFX_ByteStringC.tsepez
Having this happen implicitly can be dangerous because the lifetime has to be considered; we should have caught the "red bots" in https://codereview.chromium.org/1847333004/#ps60001 at compile time. Review URL: https://codereview.chromium.org/1853233002