r21846 - in /desktop/unstable/totem-pl-parser/debian: changelog control patches/01_make-reentrant.patch
slomo at users.alioth.debian.org
slomo at users.alioth.debian.org
Thu Oct 8 10:58:05 UTC 2009
Author: slomo
Date: Thu Oct 8 10:58:05 2009
New Revision: 21846
URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=21846
Log:
* debian/patches/01_make-reentrant.patch:
+ Patch by Matt Kraai <kraai at ftbfs.org> to make totem-pl-parser
reentrant. Fixes crashes in rhythmbox (Closes: #547683).
Added:
desktop/unstable/totem-pl-parser/debian/patches/01_make-reentrant.patch
Modified:
desktop/unstable/totem-pl-parser/debian/changelog
desktop/unstable/totem-pl-parser/debian/control
Modified: desktop/unstable/totem-pl-parser/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/totem-pl-parser/debian/changelog?rev=21846&op=diff
==============================================================================
--- desktop/unstable/totem-pl-parser/debian/changelog [utf-8] (original)
+++ desktop/unstable/totem-pl-parser/debian/changelog [utf-8] Thu Oct 8 10:58:05 2009
@@ -1,3 +1,11 @@
+totem-pl-parser (2.28.1-2) unstable; urgency=low
+
+ * debian/patches/01_make-reentrant.patch:
+ + Patch by Matt Kraai <kraai at ftbfs.org> to make totem-pl-parser
+ reentrant. Fixes crashes in rhythmbox (Closes: #547683).
+
+ -- Sebastian Dröge <slomo at debian.org> Thu, 08 Oct 2009 12:53:30 +0200
+
totem-pl-parser (2.28.1-1) unstable; urgency=low
* New upstream bugfix release:
Modified: desktop/unstable/totem-pl-parser/debian/control
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/totem-pl-parser/debian/control?rev=21846&op=diff
==============================================================================
--- desktop/unstable/totem-pl-parser/debian/control [utf-8] (original)
+++ desktop/unstable/totem-pl-parser/debian/control [utf-8] Thu Oct 8 10:58:05 2009
@@ -15,7 +15,7 @@
libgmime-2.4-dev,
gtk-doc-tools (>= 1.11),
libglib2.0-doc
-Uploaders: Emilio Pozuelo Monfort <pochu at debian.org>, Gustavo Noronha Silva <kov at debian.org>, Josselin Mouette <joss at debian.org>, Sebastian Dröge <slomo at debian.org>
+Uploaders: Emilio Pozuelo Monfort <pochu at debian.org>, Josselin Mouette <joss at debian.org>, Sebastian Dröge <slomo at debian.org>
Standards-Version: 3.8.3
Package: libtotem-plparser-dev
Added: desktop/unstable/totem-pl-parser/debian/patches/01_make-reentrant.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/totem-pl-parser/debian/patches/01_make-reentrant.patch?rev=21846&op=file
==============================================================================
--- desktop/unstable/totem-pl-parser/debian/patches/01_make-reentrant.patch (added)
+++ desktop/unstable/totem-pl-parser/debian/patches/01_make-reentrant.patch [utf-8] Thu Oct 8 10:58:05 2009
@@ -1,0 +1,626 @@
+only in patch2:
+unchanged:
+--- totem-pl-parser-2.28.1.orig/plparse/xmllexer.h
++++ totem-pl-parser-2.28.1/plparse/xmllexer.h
+@@ -51,9 +51,26 @@
+ #define T_CDATA_STOP 19 /* ]]> */
+
+
++/* public structures */
++struct lexer
++{
++ const char * lexbuf;
++ int lexbuf_size;
++ int lexbuf_pos;
++ int in_comment;
++ char * lex_malloc;
++ enum {
++ NORMAL,
++ DATA,
++ CDATA,
++ } lex_mode;
++};
++
++
+ /* public functions */
+-void lexer_init(const char * buf, int size) XINE_PROTECTED;
+-int lexer_get_token(char * tok, int tok_size) XINE_PROTECTED;
++struct lexer *lexer_init(const char * buf, int size) XINE_PROTECTED;
++void lexer_finalize(struct lexer * lexer) XINE_PROTECTED;
++int lexer_get_token(struct lexer * lexer, char * tok, int tok_size) XINE_PROTECTED;
+ char *lexer_decode_entities (const char *tok) XINE_PROTECTED;
+
+ #endif
+only in patch2:
+unchanged:
+--- totem-pl-parser-2.28.1.orig/plparse/xmlparser.c
++++ totem-pl-parser-2.28.1/plparse/xmlparser.c
+@@ -51,9 +51,6 @@
+ #define DATA_SIZE 64 * 1024
+ #define MAX_RECURSION 23
+
+-/* private global variables */
+-static int xml_parser_mode;
+-
+ /* private functions */
+
+ static char * strtoupper(char * str) {
+@@ -103,10 +100,17 @@
+ free(property);
+ }
+
+-void xml_parser_init(const char * buf, int size, int mode) {
++xml_parser_t *xml_parser_init(const char * buf, int size, int mode) {
++ xml_parser_t *xml_parser = malloc(sizeof(xml_parser_t));
++ xml_parser->lexer = lexer_init(buf, size);
++ xml_parser->mode = mode;
++ return xml_parser;
++}
+
+- lexer_init(buf, size);
+- xml_parser_mode = mode;
++void xml_parser_finalize(xml_parser_t *xml_parser)
++{
++ lexer_finalize(xml_parser->lexer);
++ free(xml_parser);
+ }
+
+ static void xml_parser_free_props(xml_property_t *current_property) {
+@@ -220,7 +224,7 @@
+
+ #define Q_STATE(CURRENT,NEW) (STATE_##NEW + state - STATE_##CURRENT)
+
+-static int xml_parser_get_node_internal (xml_node_t *current_node, char *root_names[], int rec, int flags)
++static int xml_parser_get_node_internal (xml_parser_t *xml_parser, xml_node_t *current_node, char *root_names[], int rec, int flags)
+ {
+ char tok[TOKEN_SIZE];
+ char property_name[TOKEN_SIZE];
+@@ -239,7 +243,7 @@
+
+ memset (tok, 0, TOKEN_SIZE);
+
+- while ((bypass_get_token) || (res = lexer_get_token(tok, TOKEN_SIZE)) != T_ERROR) {
++ while ((bypass_get_token) || (res = lexer_get_token(xml_parser->lexer, tok, TOKEN_SIZE)) != T_ERROR) {
+ bypass_get_token = 0;
+ lprintf("info: %d - %d : '%s'\n", state, res, tok);
+
+@@ -295,7 +299,7 @@
+ current_property = NULL;
+
+ /* save node name */
+- if (xml_parser_mode == XML_PARSER_CASE_INSENSITIVE) {
++ if (xml_parser->mode == XML_PARSER_CASE_INSENSITIVE) {
+ strtoupper(tok);
+ }
+ if (state == STATE_Q_NODE) {
+@@ -331,7 +335,7 @@
+ subtree->props = properties;
+ lprintf("info: rec %d new subtree %s\n", rec, node_name);
+ root_names[rec + 1] = node_name;
+- parse_res = xml_parser_get_node_internal(subtree, root_names, rec + 1, flags);
++ parse_res = xml_parser_get_node_internal(xml_parser, subtree, root_names, rec + 1, flags);
+ if (parse_res == -1 || parse_res > 0) {
+ return parse_res;
+ }
+@@ -374,7 +378,7 @@
+ case (T_IDENT):
+ /* save property name */
+ new_prop:
+- if (xml_parser_mode == XML_PARSER_CASE_INSENSITIVE) {
++ if (xml_parser->mode == XML_PARSER_CASE_INSENSITIVE) {
+ strtoupper(tok);
+ }
+ strcpy(property_name, tok);
+@@ -409,7 +413,7 @@
+ switch (res) {
+ case (T_IDENT):
+ /* must be equal to root_name */
+- if (xml_parser_mode == XML_PARSER_CASE_INSENSITIVE) {
++ if (xml_parser->mode == XML_PARSER_CASE_INSENSITIVE) {
+ strtoupper(tok);
+ }
+ if (strcmp(tok, root_names[rec]) == 0) {
+@@ -621,19 +625,19 @@
+ }
+ }
+
+-static int xml_parser_get_node (xml_node_t *current_node, int flags)
++static int xml_parser_get_node (xml_parser_t *xml_parser, xml_node_t *current_node, int flags)
+ {
+ char *root_names[MAX_RECURSION + 1];
+ root_names[0] = "";
+- return xml_parser_get_node_internal (current_node, root_names, 0, flags);
++ return xml_parser_get_node_internal (xml_parser, current_node, root_names, 0, flags);
+ }
+
+-int xml_parser_build_tree_with_options(xml_node_t **root_node, int flags) {
++int xml_parser_build_tree_with_options(xml_parser_t *xml_parser, xml_node_t **root_node, int flags) {
+ xml_node_t *tmp_node, *pri_node, *q_node;
+ int res;
+
+ tmp_node = new_xml_node();
+- res = xml_parser_get_node(tmp_node, flags);
++ res = xml_parser_get_node(xml_parser, tmp_node, flags);
+
+ /* delete any top-level [CDATA] nodes */;
+ pri_node = tmp_node->child;
+@@ -676,8 +680,8 @@
+ return res;
+ }
+
+-int xml_parser_build_tree(xml_node_t **root_node) {
+- return xml_parser_build_tree_with_options (root_node, 0);
++int xml_parser_build_tree(xml_parser_t *xml_parser, xml_node_t **root_node) {
++ return xml_parser_build_tree_with_options (xml_parser, root_node, 0);
+ }
+
+ const char *xml_parser_get_property (const xml_node_t *node, const char *name) {
+only in patch2:
+unchanged:
+--- totem-pl-parser-2.28.1.orig/plparse/totem-pl-parser.c
++++ totem-pl-parser-2.28.1/plparse/totem-pl-parser.c
+@@ -1676,11 +1676,16 @@
+ xml_node_t* doc, *node;
+ char *encoding, *new_contents;
+ gsize new_size;
++ xml_parser_t *xml_parser;
+
+ totem_pl_parser_cleanup_xml (contents);
+- xml_parser_init (contents, size, XML_PARSER_CASE_INSENSITIVE);
+- if (xml_parser_build_tree_with_options (&doc, XML_PARSER_RELAXED | XML_PARSER_MULTI_TEXT) < 0)
++ xml_parser = xml_parser_init (contents, size, XML_PARSER_CASE_INSENSITIVE);
++ if (xml_parser_build_tree_with_options (xml_parser, &doc, XML_PARSER_RELAXED | XML_PARSER_MULTI_TEXT) < 0) {
++ xml_parser_finalize (xml_parser);
+ return NULL;
++ }
++
++ xml_parser_finalize (xml_parser);
+
+ encoding = NULL;
+ for (node = doc; node != NULL; node = node->next) {
+@@ -1705,12 +1710,14 @@
+ }
+ g_free (encoding);
+
+- xml_parser_init (new_contents, new_size, XML_PARSER_CASE_INSENSITIVE);
+- if (xml_parser_build_tree_with_options (&doc, XML_PARSER_RELAXED | XML_PARSER_MULTI_TEXT) < 0) {
++ xml_parser = xml_parser_init (new_contents, new_size, XML_PARSER_CASE_INSENSITIVE);
++ if (xml_parser_build_tree_with_options (xml_parser, &doc, XML_PARSER_RELAXED | XML_PARSER_MULTI_TEXT) < 0) {
++ xml_parser_finalize (xml_parser);
+ g_free (new_contents);
+ return NULL;
+ }
+
++ xml_parser_finalize (xml_parser);
+ g_free (new_contents);
+
+ return doc;
+only in patch2:
+unchanged:
+--- totem-pl-parser-2.28.1.orig/plparse/xmlparser.h
++++ totem-pl-parser-2.28.1/plparse/xmlparser.h
+@@ -65,10 +65,16 @@
+ struct xml_node_s *next;
+ } xml_node_t;
+
+-void xml_parser_init(const char * buf, int size, int mode) XINE_PROTECTED;
++typedef struct xml_parser_s {
++ struct lexer *lexer;
++ int mode;
++} xml_parser_t;
+
+-int xml_parser_build_tree(xml_node_t **root_node) XINE_PROTECTED;
+-int xml_parser_build_tree_with_options(xml_node_t **root_node, int flags) XINE_PROTECTED;
++xml_parser_t *xml_parser_init(const char * buf, int size, int mode) XINE_PROTECTED;
++void xml_parser_finalize(xml_parser_t *xml_parser) XINE_PROTECTED;
++
++int xml_parser_build_tree(xml_parser_t *xml_parser, xml_node_t **root_node) XINE_PROTECTED;
++int xml_parser_build_tree_with_options(xml_parser_t *xml_parser, xml_node_t **root_node, int flags) XINE_PROTECTED;
+
+ void xml_parser_free_tree(xml_node_t *root_node) XINE_PROTECTED;
+
+only in patch2:
+unchanged:
+--- totem-pl-parser-2.28.1.orig/plparse/xmllexer.c
++++ totem-pl-parser-2.28.1/plparse/xmllexer.c
+@@ -44,16 +44,9 @@
+
+ /* private constants*/
+
+-/* private global variables */
+-static const char * lexbuf;
+-static int lexbuf_size = 0;
+-static int lexbuf_pos = 0;
+-static int in_comment = 0;
+-static char *lex_malloc = NULL;
+-
+ enum utf { UTF32BE, UTF32LE, UTF16BE, UTF16LE };
+
+-static void lex_convert (const char * buf, int size, enum utf utf)
++static void lex_convert (struct lexer * lexer, const char * buf, int size, enum utf utf)
+ {
+ char *utf8 = malloc (size * (utf >= UTF16BE ? 3 : 6) + 1);
+ char *bp = utf8;
+@@ -85,45 +78,44 @@
+ }
+ }
+ *bp = 0;
+- lexbuf_size = bp - utf8;
+- lexbuf = lex_malloc = realloc (utf8, lexbuf_size + 1);
++ lexer->lexbuf_size = bp - utf8;
++ lexer->lexbuf = lexer->lex_malloc = realloc (utf8, lexer->lexbuf_size + 1);
+ }
+
+-static enum {
+- NORMAL,
+- DATA,
+- CDATA,
+-} lex_mode = NORMAL;
+-
+-void lexer_init(const char * buf, int size) {
++struct lexer *lexer_init(const char * buf, int size) {
+ static const char boms[] = { 0xFF, 0xFE, 0, 0, 0xFE, 0xFF },
+ bom_utf8[] = { 0xEF, 0xBB, 0xBF };
++ struct lexer * lexer = calloc (1, sizeof (*lexer));
+
+- free (lex_malloc);
+- lex_malloc = NULL;
+-
+- lexbuf = buf;
+- lexbuf_size = size;
++ lexer->lexbuf = buf;
++ lexer->lexbuf_size = size;
+
+ if (size >= 4 && !memcmp (buf, boms + 2, 4))
+- lex_convert (buf + 4, size - 4, UTF32BE);
++ lex_convert (lexer, buf + 4, size - 4, UTF32BE);
+ else if (size >= 4 && !memcmp (buf, boms, 4))
+- lex_convert (buf + 4, size - 4, UTF32LE);
++ lex_convert (lexer, buf + 4, size - 4, UTF32LE);
+ else if (size >= 3 && !memcmp (buf, bom_utf8, 3))
+ {
+- lexbuf += 3;
+- lexbuf_size -= 3;
++ lexer->lexbuf += 3;
++ lexer->lexbuf_size -= 3;
+ }
+ else if (size >= 2 && !memcmp (buf, boms + 4, 2))
+- lex_convert (buf + 2, size - 2, UTF16BE);
++ lex_convert (lexer, buf + 2, size - 2, UTF16BE);
+ else if (size >= 2 && !memcmp (buf, boms, 2))
+- lex_convert (buf + 2, size - 2, UTF16LE);
++ lex_convert (lexer, buf + 2, size - 2, UTF16LE);
+
+- lexbuf_pos = 0;
+- lex_mode = NORMAL;
+- in_comment = 0;
++ lexer->lexbuf_pos = 0;
++ lexer->lex_mode = NORMAL;
++ lexer->in_comment = 0;
+
+ lprintf("buffer length %d\n", size);
++ return lexer;
++}
++
++void lexer_finalize(struct lexer * lexer)
++{
++ free (lexer->lex_malloc);
++ free (lexer);
+ }
+
+ typedef enum {
+@@ -144,17 +136,17 @@
+ STATE_IDENT /* must be last */
+ } lexer_state_t;
+
+-int lexer_get_token(char * tok, int tok_size) {
++int lexer_get_token(struct lexer * lexer, char * tok, int tok_size) {
+ int tok_pos = 0;
+ lexer_state_t state = STATE_IDLE;
+ char c;
+
+ if (tok) {
+- while ((tok_pos < tok_size) && (lexbuf_pos < lexbuf_size)) {
+- c = lexbuf[lexbuf_pos];
+- lprintf("c=%c, state=%d, lex_mode=%d, in_comment=%d\n", c, state, lex_mode, in_comment);
++ while ((tok_pos < tok_size) && (lexer->lexbuf_pos < lexer->lexbuf_size)) {
++ c = lexer->lexbuf[lexer->lexbuf_pos];
++ lprintf("c=%c, state=%d, lex_mode=%d, lexer->in_comment=%d\n", c, state, lexer->lex_mode, lexer->in_comment);
+
+- switch (lex_mode) {
++ switch (lexer->lex_mode) {
+ case NORMAL:
+ switch (state) {
+ /* init state */
+@@ -187,7 +179,7 @@
+ break;
+
+ case '/':
+- if (!in_comment)
++ if (!lexer->in_comment)
+ state = STATE_T_M_STOP_2;
+ tok[tok_pos] = c;
+ tok_pos++;
+@@ -214,7 +206,7 @@
+ break;
+
+ case '?':
+- if (!in_comment)
++ if (!lexer->in_comment)
+ state = STATE_T_TI_STOP;
+ tok[tok_pos] = c;
+ tok_pos++;
+@@ -226,14 +218,14 @@
+ tok_pos++;
+ break;
+ }
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ break;
+
+ /* end of line */
+ case STATE_EOL:
+ if (c == '\n' || (c == '\r')) {
+ tok[tok_pos] = c;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ tok_pos++;
+ } else {
+ tok[tok_pos] = '\0';
+@@ -245,7 +237,7 @@
+ case STATE_SEPAR:
+ if (c == ' ' || (c == '\t')) {
+ tok[tok_pos] = c;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ tok_pos++;
+ } else {
+ tok[tok_pos] = '\0';
+@@ -258,20 +250,20 @@
+ switch (c) {
+ case '/':
+ tok[tok_pos] = c;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ tok_pos++; /* FIXME */
+ tok[tok_pos] = '\0';
+ return T_M_START_2;
+ break;
+ case '!':
+ tok[tok_pos] = c;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ tok_pos++;
+ state = STATE_T_COMMENT;
+ break;
+ case '?':
+ tok[tok_pos] = c;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ tok_pos++; /* FIXME */
+ tok[tok_pos] = '\0';
+ return T_TI_START;
+@@ -285,8 +277,8 @@
+ /* T_M_STOP_1 */
+ case STATE_T_M_STOP_1:
+ tok[tok_pos] = '\0';
+- if (!in_comment)
+- lex_mode = DATA;
++ if (!lexer->in_comment)
++ lexer->lex_mode = DATA;
+ return T_M_STOP_1;
+ break;
+
+@@ -294,11 +286,11 @@
+ case STATE_T_M_STOP_2:
+ if (c == '>') {
+ tok[tok_pos] = c;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ tok_pos++; /* FIXME */
+ tok[tok_pos] = '\0';
+- if (!in_comment)
+- lex_mode = DATA;
++ if (!lexer->in_comment)
++ lexer->lex_mode = DATA;
+ return T_M_STOP_2;
+ } else {
+ tok[tok_pos] = '\0';
+@@ -315,7 +307,7 @@
+ /* T_STRING */
+ case STATE_T_STRING_DOUBLE:
+ tok[tok_pos] = c;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ if (c == '\"') { /* " */
+ tok[tok_pos] = '\0'; /* FIXME */
+ return T_STRING;
+@@ -327,33 +319,33 @@
+ case STATE_T_COMMENT:
+ switch (c) {
+ case '-':
+- lexbuf_pos++;
+- if (lexbuf[lexbuf_pos] == '-')
++ lexer->lexbuf_pos++;
++ if (lexer->lexbuf[lexer->lexbuf_pos] == '-')
+ {
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ tok[tok_pos++] = '-'; /* FIXME */
+ tok[tok_pos++] = '-';
+ tok[tok_pos] = '\0';
+- in_comment = 1;
++ lexer->in_comment = 1;
+ return T_C_START;
+ }
+ break;
+ case 'D':
+- lexbuf_pos++;
+- if (strncmp(lexbuf + lexbuf_pos, "OCTYPE", 6) == 0) {
++ lexer->lexbuf_pos++;
++ if (strncmp(lexer->lexbuf + lexer->lexbuf_pos, "OCTYPE", 6) == 0) {
+ strncpy(tok + tok_pos, "DOCTYPE", 7); /* FIXME */
+- lexbuf_pos += 6;
++ lexer->lexbuf_pos += 6;
+ return T_DOCTYPE_START;
+ } else {
+ return T_ERROR;
+ }
+ break;
+ case '[':
+- lexbuf_pos++;
+- if (strncmp(lexbuf + lexbuf_pos, "CDATA[", 6) == 0) {
++ lexer->lexbuf_pos++;
++ if (strncmp(lexer->lexbuf + lexer->lexbuf_pos, "CDATA[", 6) == 0) {
+ strncpy (tok + tok_pos, "[CDATA[", 7); /* FIXME */
+- lexbuf_pos += 6;
+- lex_mode = CDATA;
++ lexer->lexbuf_pos += 6;
++ lexer->lex_mode = CDATA;
+ return T_CDATA_START;
+ } else{
+ return T_ERROR;
+@@ -369,11 +361,11 @@
+ case STATE_T_TI_STOP:
+ if (c == '>') {
+ tok[tok_pos] = c;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ tok_pos++; /* FIXME */
+ tok[tok_pos] = '\0';
+- if (!in_comment)
+- lex_mode = DATA;
++ if (!lexer->in_comment)
++ lexer->lex_mode = DATA;
+ return T_TI_STOP;
+ } else {
+ tok[tok_pos] = '\0';
+@@ -387,13 +379,13 @@
+ case '-':
+ tok[tok_pos] = c;
+ tok_pos++;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ state = STATE_T_C_STOP;
+ break;
+ default:
+ tok[tok_pos] = c;
+ tok_pos++;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ state = STATE_IDENT;
+ }
+ break;
+@@ -404,21 +396,21 @@
+ case '>':
+ tok[tok_pos] = c;
+ tok_pos++;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ tok[tok_pos] = '\0'; /* FIX ME */
+ if (strlen(tok) != 3) {
+ tok[tok_pos - 3] = '\0';
+- lexbuf_pos -= 3;
++ lexer->lexbuf_pos -= 3;
+ return T_IDENT;
+ } else {
+- in_comment = 0;
++ lexer->in_comment = 0;
+ return T_C_STOP;
+ }
+ break;
+ default:
+ tok[tok_pos] = c;
+ tok_pos++;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ state = STATE_IDENT;
+ }
+ break;
+@@ -426,7 +418,7 @@
+ /* T_STRING (single quotes) */
+ case STATE_T_STRING_SINGLE:
+ tok[tok_pos] = c;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ if (c == '\'') { /* " */
+ tok[tok_pos] = '\0'; /* FIXME */
+ return T_STRING;
+@@ -453,19 +445,19 @@
+ case '?':
+ tok[tok_pos] = c;
+ tok_pos++;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ state = STATE_T_TI_STOP;
+ break;
+ case '-':
+ tok[tok_pos] = c;
+ tok_pos++;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ state = STATE_T_DASHDASH;
+ break;
+ default:
+ tok[tok_pos] = c;
+ tok_pos++;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ }
+ break;
+ default:
+@@ -479,12 +471,12 @@
+ {
+ case '<':
+ tok[tok_pos] = '\0';
+- lex_mode = NORMAL;
++ lexer->lex_mode = NORMAL;
+ return T_DATA;
+ default:
+ tok[tok_pos] = c;
+ tok_pos++;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ }
+ break;
+
+@@ -492,32 +484,32 @@
+ switch (c)
+ {
+ case ']':
+- if (strncmp(lexbuf + lexbuf_pos, "]]>", 3) == 0) {
+- lexbuf_pos += 3;
+- lex_mode = DATA;
++ if (strncmp(lexer->lexbuf + lexer->lexbuf_pos, "]]>", 3) == 0) {
++ lexer->lexbuf_pos += 3;
++ lexer->lex_mode = DATA;
+ return T_CDATA_STOP;
+ } else {
+ tok[tok_pos] = c;
+ tok_pos++;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ }
+ break;
+ default:
+ tok[tok_pos] = c;
+ tok_pos++;
+- lexbuf_pos++;
++ lexer->lexbuf_pos++;
+ }
+ break;
+ }
+ }
+ lprintf ("loop done tok_pos = %d, tok_size=%d, lexbuf_pos=%d, lexbuf_size=%d\n",
+- tok_pos, tok_size, lexbuf_pos, lexbuf_size);
++ tok_pos, tok_size, lexer->lexbuf_pos, lexer->lexbuf_size);
+
+ /* pb */
+ if (tok_pos >= tok_size) {
+ lprintf("token buffer is too little\n");
+ } else {
+- if (lexbuf_pos >= lexbuf_size) {
++ if (lexer->lexbuf_pos >= lexer->lexbuf_size) {
+ /* Terminate the current token */
+ tok[tok_pos] = '\0';
+ switch (state) {
More information about the pkg-gnome-commits
mailing list