From b7cbee794087f67bdcac2eb09acfbbc937bfea12 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Tue, 21 May 2013 10:53:20 +0000 Subject: [PATCH] fix the encoding problem with unicode literals in the Python binding --- src/runtime/c/pgf/expr.c | 8 ++++---- src/runtime/c/pgf/expr.h | 2 +- src/runtime/python/pypgf.c | 3 +-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/runtime/c/pgf/expr.c b/src/runtime/c/pgf/expr.c index 13093d14f..170751b8b 100644 --- a/src/runtime/c/pgf/expr.c +++ b/src/runtime/c/pgf/expr.c @@ -148,7 +148,7 @@ typedef enum { struct PgfExprParser { GuExn* err; - GuReader* rdr; + GuIn* in; GuPool* expr_pool; GuPool* tmp_pool; PGF_TOKEN_TAG token_tag; @@ -159,7 +159,7 @@ struct PgfExprParser { static void pgf_expr_parser_getc(PgfExprParser* parser) { - parser->ch = gu_getc(parser->rdr, parser->err); + parser->ch = gu_in_u8(parser->in, parser->err); if (!gu_ok(parser->err)) { gu_exn_clear(parser->err); parser->ch = EOF; @@ -353,12 +353,12 @@ pgf_expr_parser_expr(PgfExprParser* parser) } PgfExpr -pgf_read_expr(GuReader* rdr, GuPool* pool, GuExn* err) +pgf_read_expr(GuIn* in, GuPool* pool, GuExn* err) { GuPool* tmp_pool = gu_new_pool(); PgfExprParser* parser = gu_new(PgfExprParser, tmp_pool); parser->err = err; - parser->rdr = rdr; + parser->in = in; parser->expr_pool = pool; parser->tmp_pool = NULL; parser->ch = ' '; diff --git a/src/runtime/c/pgf/expr.h b/src/runtime/c/pgf/expr.h index 7bd2d218f..ef2dd013c 100644 --- a/src/runtime/c/pgf/expr.h +++ b/src/runtime/c/pgf/expr.h @@ -152,7 +152,7 @@ pgf_expr_unapply(PgfExpr expr, GuPool* pool); PgfExpr -pgf_read_expr(GuReader* rdr, GuPool* pool, GuExn* err); +pgf_read_expr(GuIn* in, GuPool* pool, GuExn* err); bool pgf_literal_eq(PgfLiteral lit1, PgfLiteral lit2); diff --git a/src/runtime/python/pypgf.c b/src/runtime/python/pypgf.c index 1e11edcb5..fa5103615 100644 --- a/src/runtime/python/pypgf.c +++ b/src/runtime/python/pypgf.c @@ -1663,11 +1663,10 @@ pgf_readExpr(PyObject *self, PyObject *args) { GuPool* tmp_pool = gu_local_pool(); GuIn* in = gu_data_in(buf, len, tmp_pool); - GuReader* rdr = gu_new_utf8_reader(in, tmp_pool); GuExn* err = gu_new_exn(NULL, gu_kind(type), tmp_pool); pyexpr->pool = gu_new_pool(); - pyexpr->expr = pgf_read_expr(rdr, pyexpr->pool, err); + pyexpr->expr = pgf_read_expr(in, pyexpr->pool, err); pyexpr->master = NULL; if (!gu_ok(err) || gu_variant_is_null(pyexpr->expr)) {