summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2019-03-19Update spec. Fix `[link](<foo\>)`.John MacFarlane
2019-03-19Define CMARK_OPT_SAFE for API compatibility.John MacFarlane
It doesn't do anything; this is documented.
2019-03-17Make rendering safe by default.John MacFarlane
Removes CMARK_OPT_SAFE from options. Adds CMARK_OPT_UNSAFE, with the opposite meaning. The new default behavior is to suppress raw HTML and potentially dangerous links. The CMARK_OPT_UNSAFE option has to be set explicitly to prevent this. -------------------------------------------------------- NOTE: This change will require modifications in bindings for cmark and in most libraries and programs that use cmark. -------------------------------------------------------- Closes #239, #273. Borrows heavily from @kivikakk's patch in github/cmark-gfm#123.
2019-03-17Merge pull request #254 from github/empty-inputJohn MacFarlane
Check for empty buffer when rendering
2019-03-17Avoid gcc warning for uninitialized variable.John MacFarlane
2019-03-17Use hand-rolled scanner for thematic break.John MacFarlane
Keep track of the last position where a thematic break failed to match on a line, to avoid rescanning unnecessarily. See commonmark/cmark#284.
2019-03-17Do cheaper test first.John MacFarlane
2019-03-17Rename ends_with_blank_line with S_ prefix.John MacFarlane
As with other static functions.
2019-03-17Add CMARK_NODE__LAST_LINE_CHECKED flag.John MacFarlane
Use this to avoid unnecessary recursion in ends_with_blank_line. Closes #284.
2019-03-17In ends_with_blank_line, call S_set_last_line_blank...John MacFarlane
to avoid unnecessary repetition. Once we settle whether a list item ends in a blank line, we don't need to revisit this in considering parent list items. See commonmark/cmark#284.
2019-03-17Disallow unescaped ( in parenthesized link title.John MacFarlane
In accord with spec change.
2018-11-21check for OpenBSD 5.9+Ashe Connor
2018-11-20Use pledge(2) on OpenBSDAshe Connor
2018-11-13copy line/col info straight from opener/closerAshe Connor
We can't rely on anything in `subj` since it's been modified while parsing the subject and could represent line info from a future line. This is simple and works.
2018-10-31render.c: reset last_breakable after cr.John MacFarlane
Fixes jgm/pandoc#5033.
2018-10-08Fix a typo in houdini_href_e.cFelix Yan
2018-10-04commonmark writer: use ~~~ fences if info string contains backtick.John MacFarlane
This is needed for round-trip tests.
2018-10-04Update scanners for new info string rules.John MacFarlane
2018-09-14Merge pull request #257 from pclouds/xml-space-preserveJohn MacFarlane
Add xml:space="preserve" in XML output when appropriate
2018-09-09Check for whitespace before reference title.John MacFarlane
Closes #263.
2018-09-05build: only attempt to install MSVC system libraries on WindowsSaleem Abdulrasool
Newer versions of CMake attempt to query the system for information about the VS 2017 installation. Unfortunately, this query fails on non-Windows systems when cross-compiling: cmake_host_system_information does not recognize <key> VS_15_DIR CMake will not find these system libraries on non-Windows hosts anyways, and we were silencing the warnings, so simply omit the installation when cross-compiling to Windows.
2018-08-26Simplify code normalization, in line with spec change.John MacFarlane
2018-08-25Code span spec changes.John MacFarlane
These affect both parsing and writing commonmark.
2018-07-07Add xml:space="preserve" in XML output when appropriateNguyễn Thái Ngọc Duy
With current HTML escaping, sometimes we may produce an XML tag like <code_block> </code_block> Many XML parsers consider these spaces insignificant and strip them out but we need this. There's actually a test case like this in spec.txt (search "A code block can have all empty lines as its content:") and without proper hinting, an external xml->html converter will fail the spec. XML standard covers this case. If xml:space is "preserve", then whitespaces are significant and should be kept. Add this hint for text, code, code_block, html_inline and html_block tags.
2018-06-11Removed meta from list of block tags.John MacFarlane
Added regression test. See commonmark/CommonMark#527.
2018-04-14Optimize S_find_first_nonspace.John MacFarlane
We were needlessly redoing things we'd already done. Now we skip the work if the first nonspace is greater than the current offset. This fixes pathological slowdown with deeply nested lists (#255). For N = 3000, the time goes from over 17s to about 0.7s. Thanks to @mity for diagnosing the problem.
2018-03-25Allow spaces in link destination delimited with pointy brackets.John MacFarlane
To conform to recent spec change.
2018-03-25Adjust max length of decimal/numeric entities.John MacFarlane
See commonmark/CommonMark#487.
2018-03-25Fix inline raw HTML parsing.John MacFarlane
This fixes a recently added failing spec test case. Previously spaces were being allowed in unquoted attribute values; no we forbid them.
2018-03-25Don't allow list markers to be indented >= 4 spaces.John MacFarlane
See commonmark/CommonMark#497.
2018-02-20Check for empty buffer when renderingPhil Turnbull
For empty documents, `->size` is zero so `renderer.buffer->ptr[renderer.buffer->size - 1]` will cause an out-of-bounds read. Empty buffers always point to the global `cmark_strbuf__initbuf` buffer so we read `cmark_strbuf__initbuf[-1]`.
2017-11-14Generate export header for static-only buildNick Wellnhofer
Fixes issue #247.
2017-11-05Merge pull request #217 from github/upstream/limit-nested-parensJohn MacFarlane
> 32 nested balanced parens in a link is bananas
2017-11-02Merge branch 'master' into upstream/inline-sourceposAshe Connor
2017-10-19Include GNUInstallDirs in src/CMakeLists.txtNick Wellnhofer
Fixes installation error under some CMake versions, notably kalakris' CMake backport often used with Travis.
2017-10-12Fixed regression in install dest for static library.John MacFarlane
Due to a mistake, 0.28.1 installed libcmark.a into include/. Closes #238.
2017-10-10Don't use CMAKE_INSTALL_LIBDIR to create libcmark.pc.John MacFarlane
For some reason this wasn't getting set in processing libcmark.pc.in, and we were getting the wrong entry in libcmark.pc. (See #236) The new approach sets an internal libdir variable to lib${LIB_SUFFIX}. This variable is used both to set the install destination and in the libcmark.pc.in template. Closes #236. However, I'd welcome comments from @juhp who originally added CMAKE_INSTALL_LIBDIR in #185. I think that the new system should work fine with Fedora, since LIB_SUFFIX will be set appropriately, but some testing is in order.
2017-09-14blocks: Fix quadratic behavior in `finalize`Vicent Marti
2017-08-10Skip sourcepos tracking if disabledYuki Izumi
2017-08-10Fix inlines spanning newlines, text in non-paraYuki Izumi
2017-08-09--smart: open quote can never occur right after `]` or `)`.John MacFarlane
Closes #227.
2017-08-09Add sourcepos info for inlinesYuki Izumi
2017-08-03Reformat source code with 'make format'Nguyễn Thái Ngọc Duy
2017-08-01Advertise --validate-utf8 in usage informationNguyễn Thái Ngọc Duy
This option was added in 04726a7 (Added `CMARK_OPT_VALIDATE_UTF8` option. - 2015-06-16) but not "documented".
2017-07-17Fix URL scanner.Yuki Izumi
2017-07-13Reverted mistaken fix to #193.John MacFarlane
Commit 14ea489f5dd6e3d07e23f104d6c9ce441d05751b
2017-07-12> 32 nested balanced parens in a link is bananasYuki Izumi
2017-07-11Merge pull request #213 from github/upstream/undefined-shiftJohn MacFarlane
Use unsigned integer when shifting
2017-07-11Use unsigned integer when shiftingPhil Turnbull
A UBSAN warning can be triggered when handling a long sequence of backticks: src/commonmark.c:98:20: runtime error: left shift of 1 by 31 places cannot be represented in type 'int' which can be triggered by: ``` | a | b | | --- | --** `c```````````````````````````````- | | c | `|d` \| e | ```
2017-07-06Avoid memcpy'ing NULL pointersPhil Turnbull
A UBSAN warning can be triggered because the link title is an empty string: src/inlines.c:113:20: runtime error: null pointer passed as argument 2, which is declared to never be null which can be triggered by: ``` [f]:_ [f] ``` The length of the memcpy is zero so the NULL pointer is not dereferenced but it is still undefined behaviour.