Alexandre Julliard : widl: Print large enum constants in hex.

Alexandre Julliard julliard at winehq.org
Fri Nov 23 12:53:23 CST 2012


Module: wine
Branch: master
Commit: 756d33ddae316c71b1241e7c8684c07cd82b9e05
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=756d33ddae316c71b1241e7c8684c07cd82b9e05

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Nov 23 17:39:55 2012 +0100

widl: Print large enum constants in hex.

---

 tools/widl/parser.y |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/tools/widl/parser.y b/tools/widl/parser.y
index 616a538..9c2281f 100644
--- a/tools/widl/parser.y
+++ b/tools/widl/parser.y
@@ -620,7 +620,10 @@ enum_list: enum					{ if (!$1->eval)
 	| enum_list ',' enum			{ if (!$3->eval)
                                                   {
                                                     var_t *last = LIST_ENTRY( list_tail($$), var_t, entry );
-                                                    $3->eval = make_exprl(EXPR_NUM, last->eval->cval + 1);
+                                                    enum expr_type type = EXPR_NUM;
+                                                    if (last->eval->type == EXPR_HEXNUM) type = EXPR_HEXNUM;
+                                                    if (last->eval->cval + 1 < 0) type = EXPR_HEXNUM;
+                                                    $3->eval = make_exprl(type, last->eval->cval + 1);
                                                   }
                                                   $$ = append_var( $1, $3 );
 						}




More information about the wine-cvs mailing list