Python 3.4 compiles C extensions with the `-Werror=declaration-after-statement` flag that enforces C90 more strictly than previous versions. Move all statements after declarations to make sure this extension builds on 3.4.tags/v0.4
| @@ -2601,17 +2601,17 @@ static PyObject* Tokenizer_parse_as_table_style(Tokenizer* self, char end_token, | |||
| */ | |||
| static int Tokenizer_handle_table_start(Tokenizer* self) | |||
| { | |||
| self->head += 2; | |||
| Py_ssize_t reset = self->head; | |||
| Py_ssize_t reset = self->head + 1; | |||
| PyObject *style, *padding, *newline_character; | |||
| PyObject *table = NULL; | |||
| self->head += 2; | |||
| if(Tokenizer_push(self, LC_TABLE_OPEN)) | |||
| return -1; | |||
| padding = Tokenizer_parse_as_table_style(self, '\n', 1); | |||
| if (BAD_ROUTE) { | |||
| RESET_ROUTE(); | |||
| self->head = reset - 1; | |||
| self->head = reset; | |||
| if (Tokenizer_emit_text(self, "{|")) | |||
| return -1; | |||
| return 0; | |||
| @@ -2638,7 +2638,7 @@ static int Tokenizer_handle_table_start(Tokenizer* self) | |||
| if (BAD_ROUTE) { | |||
| RESET_ROUTE(); | |||
| // offset displacement done by parse() | |||
| self->head = reset - 1; | |||
| self->head = reset; | |||
| if (Tokenizer_emit_text(self, "{|")) | |||
| return -1; | |||
| return 0; | |||
| @@ -2675,17 +2675,17 @@ static PyObject * Tokenizer_handle_table_end(Tokenizer* self) | |||
| */ | |||
| static int Tokenizer_handle_table_row(Tokenizer* self) | |||
| { | |||
| Py_ssize_t reset = self->head; | |||
| PyObject *padding, *style, *row; | |||
| self->head += 2; | |||
| if (!Tokenizer_CAN_RECURSE(self)) { | |||
| if (Tokenizer_emit_text(self, "|-")) | |||
| return -1; | |||
| self->head += 1; | |||
| self->head -= 1; | |||
| return 0; | |||
| } | |||
| Py_ssize_t reset = self->head; | |||
| self->head += 2; | |||
| PyObject *padding, *style, *row; | |||
| if(Tokenizer_push(self, LC_TABLE_OPEN | LC_TABLE_ROW_OPEN)) | |||
| return -1; | |||
| padding = Tokenizer_parse_as_table_style(self, '\n', 0); | |||
| @@ -2738,20 +2738,20 @@ static PyObject* Tokenizer_handle_table_row_end(Tokenizer* self) | |||
| static int Tokenizer_handle_table_cell(Tokenizer* self, const char *markup, | |||
| const char *tag, uint64_t line_context) | |||
| { | |||
| if (!Tokenizer_CAN_RECURSE(self)) { | |||
| if (Tokenizer_emit_text(self, markup)) | |||
| return -1; | |||
| self->head += strlen(markup) - 1; | |||
| return 0; | |||
| } | |||
| uint64_t old_context = self->topstack->context; | |||
| uint64_t cell_context; | |||
| Py_ssize_t reset = self->head; | |||
| self->head += strlen(markup); | |||
| PyObject *padding, *cell; | |||
| PyObject *style = NULL; | |||
| const char *close_open_markup = NULL; | |||
| self->head += strlen(markup); | |||
| if (!Tokenizer_CAN_RECURSE(self)) { | |||
| if (Tokenizer_emit_text(self, markup)) | |||
| return -1; | |||
| self->head--; | |||
| return 0; | |||
| } | |||
| cell = Tokenizer_parse(self, LC_TABLE_OPEN | LC_TABLE_CELL_OPEN | LC_TABLE_CELL_STYLE | line_context, 1); | |||
| if (BAD_ROUTE) { | |||
| @@ -1050,9 +1050,9 @@ class Tokenizer(object): | |||
| def _handle_table_start(self): | |||
| """Handle the start of a table.""" | |||
| self._head += 2 | |||
| reset = self._head | |||
| reset = self._head + 1 | |||
| style, table = None, None | |||
| self._head += 2 | |||
| try: | |||
| self._push(contexts.TABLE_OPEN) | |||
| padding = self._parse_as_table_style("\n", break_on_table_end=True) | |||
| @@ -1066,7 +1066,7 @@ class Tokenizer(object): | |||
| self._head += 2 | |||
| except BadRoute: | |||
| # offset displacement done by _parse() | |||
| self._head = reset - 1 | |||
| self._head = reset | |||
| self._emit_text("{|") | |||
| else: | |||
| self._emit_table_tag("{|", "table", style, padding, None, table, "|}") | |||
| @@ -1079,14 +1079,14 @@ class Tokenizer(object): | |||
| def _handle_table_row(self): | |||
| """Parse as style until end of the line, then continue.""" | |||
| reset = self._head | |||
| style, padding = None, "" | |||
| self._head += 2 | |||
| if not self._can_recurse(): | |||
| self._emit_text("|-") | |||
| self._head += 1 | |||
| self._head -= 1 | |||
| return | |||
| reset = self._head | |||
| self._head += 2 | |||
| style, padding = None, "" | |||
| try: | |||
| self._push(contexts.TABLE_OPEN | contexts.TABLE_ROW_OPEN) | |||
| padding = self._parse_as_table_style("\n") | |||
| @@ -1108,15 +1108,15 @@ class Tokenizer(object): | |||
| def _handle_table_cell(self, markup, tag, line_context): | |||
| """Parse as normal syntax unless we hit a style marker, then parse style | |||
| as HTML attributes and the remainder as normal syntax.""" | |||
| old_context = self._context | |||
| reset = self._head | |||
| reset_for_style, padding, style = False, "", None | |||
| self._head += len(markup) | |||
| if not self._can_recurse(): | |||
| self._emit_text(markup) | |||
| self._head += len(markup) - 1 | |||
| self._head -= 1 | |||
| return | |||
| old_context = self._context | |||
| reset = self._head | |||
| self._head += len(markup) | |||
| reset_for_style, padding, style = False, "", None | |||
| try: | |||
| cell = self._parse(contexts.TABLE_OPEN | contexts.TABLE_CELL_OPEN | line_context | contexts.TABLE_CELL_STYLE) | |||
| cell_context = self._context | |||
| @@ -1149,8 +1149,6 @@ class Tokenizer(object): | |||
| def _handle_table_cell_end(self, reset_for_style=False): | |||
| """Returns the current context, with the TABLE_CELL_STYLE flag set if | |||
| it is necessary to reset and parse style attributes.""" | |||
| if self._context & (contexts.FAIL & ~contexts.TABLE): | |||
| raise BadRoute | |||
| if reset_for_style: | |||
| self._context |= contexts.TABLE_CELL_STYLE | |||
| else: | |||