aboutsummaryrefslogtreecommitdiff
path: root/spec.txt
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2015-07-14 11:48:43 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2015-07-14 11:48:43 -0700
commit0244be2aadc65b805a61851f9235f119ac96a093 (patch)
treee9843c19d8243d0387a4eb0ad133fa4bf1fd752d /spec.txt
parent22815e5c36b232b9005750cc1778d183e4d1b4ff (diff)
Added 9-digit limit on ordered list start number.
Intent is to avoid problems with overflows. See http://talk.commonmark.org/t/what-is-or-what-should-be-the-range-of-indices-of-ordered-list-items/1249 Some browsers use signed 32-bit integers for indexing the items of an ordered list, and this can lead to odd or undefined behavior if 10-digit start numbers are allowed.
Diffstat (limited to 'spec.txt')
-rw-r--r--spec.txt49
1 files changed, 47 insertions, 2 deletions
diff --git a/spec.txt b/spec.txt
index 9b5e9dc..4062998 100644
--- a/spec.txt
+++ b/spec.txt
@@ -3104,8 +3104,10 @@ A [bullet list marker](@bullet-list-marker)
is a `-`, `+`, or `*` character.
An [ordered list marker](@ordered-list-marker)
-is a sequence of one of more digits (`0-9`), followed by either a
-`.` character or a `)` character.
+is a sequence of 1--9 arabic digits (`0-9`), followed by either a
+`.` character or a `)` character. (The reason for the length
+limit is that with 10 digits we start seeing integer overflows
+in some browsers.)
The following rules define [list items]:
@@ -3374,6 +3376,49 @@ A list item may contain any kind of block:
</ol>
.
+Note that ordered list start numbers must be nine digits or less:
+
+.
+123456789. ok
+.
+<ol start="123456789">
+<li>ok</li>
+</ol>
+.
+
+.
+1234567890. not ok
+.
+<p>1234567890. not ok</p>
+.
+
+A start number may begin with 0s:
+
+.
+0. ok
+.
+<ol start="0">
+<li>ok</li>
+</ol>
+.
+
+.
+003. ok
+.
+<ol start="3">
+<li>ok</li>
+</ol>
+.
+
+A start number may not be negative:
+
+.
+-1. not ok
+.
+<p>-1. not ok</p>
+.
+
+
2. **Item starting with indented code.** If a sequence of lines *Ls*
constitute a sequence of blocks *Bs* starting with an indented code
block and not separated from each other by more than one blank line,