summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2015-02-20Cleaned up some comments.John MacFarlane
2015-02-19Fixed use-after-free error.John MacFarlane
Closes #9, confirmed with ASAN. Avoid using `parser->current` in the loop that creates new blocks, since `finalize` in `add_child` may have removed the current parser (if it contains only reference definitions). This isn't a great solution; in the long run we need to rewrite to make the logic clearer and to make it harder to make mistakes like this one.
2015-02-19Fixed use-after-free bug.John MacFarlane
This arose when a paragraph containing only reference links and blank space was finalized. Finalization would remove the node. `finalize` returns the parent node, but the problem arose because we had both `cur` and `parser->current`, and only one was being updated. Solution: remove `cur`, which is a holdover from before we had `parser->current`. I believe this will close #9 -- @JordanMilne can you test and confirm?
2015-02-18Repacked delimiter struct to avoid hole.John MacFarlane
2015-02-18Packed cmark_node struct to fit into 128 bytes.John MacFarlane
This gives a small performance boost (0.37 to 0.36).
2015-02-17Moved a test outside a loop.John MacFarlane
2015-02-16Rename CMARK_OPT_SMARTPUNCT -> CMARK_OPT_SMART.John MacFarlane
2015-02-16Made 'options' an int rather than a long.John MacFarlane
For consistency with the API.
2015-02-16Use ascii escapes for punctuation characters for portability.John MacFarlane
2015-02-16Move normalization step from main to cmark_parser_finish.John MacFarlane
2015-02-16Properly handle " with no matching close quote with --smart.John MacFarlane
This occurs in fiction: when a speaker has dialogue with multiple paragraphs, a close quote is used only on the final one. Added test cases.
2015-02-15Fixed man escaping for unicode characters.John MacFarlane
2015-02-15Proper escaping of smart punctuation in man writer.John MacFarlane
2015-02-15Removed unneeded include.John MacFarlane
2015-02-15Moved handling of --smart from renderer to parser.John MacFarlane
This allows backslash escapes to disable smart quote transformations in particular cases. Closes #8.
2015-02-15Added options parameter to cmark_parse_document, cmark_parse_file.John MacFarlane
Also to some non-exported functions in blocks and inlines.
2015-02-15Moved normalization step from XML renderer to main.John MacFarlane
2015-02-15Fixed segfault with --normalize (closes #7).John MacFarlane
This bug was introduced after the modification in 009c3847f004fda437dd5376a9452973b1cb913e.
2015-02-15Implemented --smart for man output.John MacFarlane
2015-02-15Further improvements and small optimizations in smart punctuation code.John MacFarlane
2015-02-15Optimized --smart.John MacFarlane
Previously we had 0.24s on the benchmark without `--smart`, 0.38s with it. Now we have 0.27s with `--smart`, so `--smart` has only a small performance impact.
2015-02-14Added smart.c, smart.h with function abstracting smart punct rendering.John MacFarlane
Also fixed some bugs in earlier smart handling. Now handles UTF-8.
2015-02-14astyle changes (code formatting only).John MacFarlane
2015-02-14Improved smart quote recognition.John MacFarlane
All tests now pass.
2015-02-14Added CMARK_OPT_SMARTPUNCT and --smart option.John MacFarlane
So far this is only implemented for the HTML renderer. Ultimately some of this should be factored out into a form that can be used in other renderers.
2015-02-13Updated scanners for new whitespace definition.John MacFarlane
2015-02-02Don't rely on strnlen being availableNick Wellnhofer
2015-01-31Fixed autolink scanner to conform to the spec.John MacFarlane
Backslash escapes not allowed in autolinks.
2015-01-28Added Profile build type, 'make prof' target.John MacFarlane
2015-01-23Add version information to shared libraryNick Wellnhofer
2015-01-23Let cmake update versionNick Wellnhofer
Add a new template cmark_version.h.in to generate cmark_version.h containing version information.
2015-01-23Improve version informationNick Wellnhofer
Add version number and string as macros and symbols. Version numbers can be easily compared, for example in the C preprocessor: #include <cmark.h> #if CMARK_VERSION < 0x020200 #error Requires libcmark 2.2.0 or higher #endif Storing the version in a global variable allows to check the library version at runtime. For example: if (CMARK_VERSION != cmark_version) { warn("Compiled against libcmark %s, but using %s", CMARK_VERSION_STRING, cmark_version_string); } The version should be updated whenever the public API is changed.
2015-01-21Avoid free(0) for link titles and URLs.John MacFarlane
2015-01-21Removed unnecessary strbuf_free's.John MacFarlane
2015-01-21Avoid trying to free string_contents for inlines.John MacFarlane
This avoids an unnecessary free(0) -- and perhaps free(???). However, ltrace reveals that there is still a free(0) happening, with some other source.
2015-01-20Accessor for iterator's root nodeNick Wellnhofer
2015-01-20Add user data field for nodesNick Wellnhofer
2015-01-19Man writer: ensure we properly escape multiline strings.John MacFarlane
2015-01-18Readjust parser->current after closing fenced block.John MacFarlane
Added assertion to raise an error if finalize is called on a closed block (as was happening undetected because of the fallback behavior).
2015-01-18Changed rule for `_` emphasis and strong emphasis.John MacFarlane
To prevent intra-word emphasis, we used to check to see if the delimiter was followed/preceded by an ASCII alphanumeric. We now do something more elegant: whereas an opening `*` must be left-flanking, an opening `_` must be left-flanking *and not right-flanking*. And so on for the other cases. All the original tests passed except some tests with Russian text with internal `_`, which formerly created emphasis but no longer do with the new rule. These tests have been adjusted. A few new test cases have been added to illustrate the rule. The C and JS implementations have both been updated.
2015-01-17Removed some unneeded tests (code clarity).John MacFarlane
2015-01-17Small code clarification.John MacFarlane
2015-01-17Put check for fence close with the other checks for end-of-block.John MacFarlane
This is a more logical arrangement and follows recent changes to the JS implementation.
2015-01-16Fixed #285 in cmark.John MacFarlane
2015-01-16Nonrecursive rewrite of ends_with_blank_line.John MacFarlane
Closes #286.
2015-01-16Renamed parameters cmark_node -> node.John MacFarlane
Minor code reformatting: This corrects an overzealous global replace from earlier.
2015-01-12Some astyle reformatting.John MacFarlane
2015-01-11xml.c: Include level attribute in header.John MacFarlane
2015-01-11xml format: use 'destination' instead of 'url', like the spec.John MacFarlane
2015-01-12Reduce size of gperf entity tableNick Wellnhofer
Don't store length of UTF-8 string. It can be computed by NULL-terminating strings shorter than 4 bytes and using strnlen. Use gperf's string pool option. This allows to use an 'int' index into the string pool instead of a pointer and is helpful on 64-bit systems. Shaves about 75 KB off the 32-bit binaries on Linux and 128 KB off the 64-bit binaries on OS X.