summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Doffman <mark.doffman@codethink.co.uk>2014-03-27 20:48:55 +0000
committerMark Doffman <mark.doffman@codethink.co.uk>2014-03-27 20:48:55 +0000
commit53061f6d4736f028729c561448b1f5a8ae874334 (patch)
tree4029198495b842ef66e97b2d4e135158a1eb011a
parentf239507998dad2a7bac232b210cf6697699d10b4 (diff)
downloadgobject-introspection-53061f6d4736f028729c561448b1f5a8ae874334.tar.gz
Revert "scanner: Correctly handle large 64 bit integer constants"
This reverts commit ac7376e0b2671ac6cb12c69b0289e029a3c2302b.
-rw-r--r--giscanner/giscannermodule.c5
-rw-r--r--giscanner/scannerparser.y14
-rw-r--r--giscanner/sourcescanner.h1
-rw-r--r--tests/scanner/Regress-1.0-expected.gir15
-rw-r--r--tests/scanner/regress.h5
5 files changed, 6 insertions, 34 deletions
diff --git a/giscanner/giscannermodule.c b/giscanner/giscannermodule.c
index 4a854413..0da20f18 100644
--- a/giscanner/giscannermodule.c
+++ b/giscanner/giscannermodule.c
@@ -162,10 +162,7 @@ symbol_get_const_int (PyGISourceSymbol *self,
return Py_None;
}
- if (self->symbol->const_int_is_unsigned)
- return PyLong_FromUnsignedLongLong ((unsigned long long)self->symbol->const_int);
- else
- return PyLong_FromLongLong ((long long)self->symbol->const_int);
+ return PyLong_FromLongLong ((long long)self->symbol->const_int);
}
static PyObject *
diff --git a/giscanner/scannerparser.y b/giscanner/scannerparser.y
index cc495cc3..06a10efa 100644
--- a/giscanner/scannerparser.y
+++ b/giscanner/scannerparser.y
@@ -1,4 +1,4 @@
-/* GObject introspection: C parser -*- indent-tabs-mode: t; tab-width: 8 -*-
+/* GObject introspection: C parser
*
* Copyright (c) 1997 Sandro Sigala <ssigala@globalnet.it>
* Copyright (c) 2007-2008 Jürg Billeter <j@bitron.ch>
@@ -232,19 +232,15 @@ primary_expression
}
| INTEGER
{
- char *rest;
- guint64 value;
$$ = gi_source_symbol_new (CSYMBOL_TYPE_CONST, scanner->current_filename, lineno);
$$->const_int_set = TRUE;
if (g_str_has_prefix (yytext, "0x") && strlen (yytext) > 2) {
- value = g_ascii_strtoull (yytext + 2, &rest, 16);
+ $$->const_int = g_ascii_strtoll (yytext + 2, NULL, 16);
} else if (g_str_has_prefix (yytext, "0") && strlen (yytext) > 1) {
- value = g_ascii_strtoull (yytext + 1, &rest, 8);
+ $$->const_int = g_ascii_strtoll (yytext + 1, NULL, 8);
} else {
- value = g_ascii_strtoull (yytext, &rest, 10);
+ $$->const_int = g_ascii_strtoll (yytext, NULL, 10);
}
- $$->const_int = value;
- $$->const_int_is_unsigned = (rest && (rest[0] == 'U'));
}
| CHARACTER
{
@@ -386,7 +382,7 @@ unary_expression
{
$$ = $3;
if ($$->const_int_set) {
- $$->base_type = gi_source_basic_type_new ($$->const_int_is_unsigned ? "guint64" : "gint64");
+ $$->base_type = gi_source_basic_type_new ("gint64");
}
}
| INTUL_CONST '(' unary_expression ')'
diff --git a/giscanner/sourcescanner.h b/giscanner/sourcescanner.h
index a2834caf..df16cf6a 100644
--- a/giscanner/sourcescanner.h
+++ b/giscanner/sourcescanner.h
@@ -126,7 +126,6 @@ struct _GISourceSymbol
gboolean const_int_set;
gboolean private;
gint64 const_int; /* 64-bit we can handle signed and unsigned 32-bit values */
- gboolean const_int_is_unsigned;
char *const_string;
gboolean const_double_set;
double const_double;
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index 1adc5caf..8d123f7a 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -87,26 +87,11 @@ and/or use gtk-doc annotations. -->
<type name="gdouble" c:type="double"/>
</field>
</record>
- <constant name="MAXUINT64"
- value="18446744073709551615"
- c:type="REGRESS_MAXUINT64">
- <type name="guint64" c:type="guint64"/>
- </constant>
- <constant name="MININT64"
- value="-9223372036854775808"
- c:type="REGRESS_MININT64">
- <type name="gint64" c:type="gint64"/>
- </constant>
<constant name="Mixed_Case_Constant"
value="4423"
c:type="REGRESS_Mixed_Case_Constant">
<type name="gint" c:type="gint"/>
</constant>
- <constant name="NEGATIVE_INT_CONSTANT"
- value="-42"
- c:type="REGRESS_NEGATIVE_INT_CONSTANT">
- <type name="gint" c:type="gint"/>
- </constant>
<constant name="STRING_CONSTANT"
value="Some String"
c:type="REGRESS_STRING_CONSTANT">
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h
index e1024b04..635ea7bd 100644
--- a/tests/scanner/regress.h
+++ b/tests/scanner/regress.h
@@ -255,7 +255,6 @@ GQuark regress_atest_error_quark (void);
/* constants */
-#define REGRESS_NEGATIVE_INT_CONSTANT -42
#define REGRESS_INT_CONSTANT 4422
#define REGRESS_DOUBLE_CONSTANT 44.22
#define REGRESS_STRING_CONSTANT "Some String"
@@ -900,8 +899,4 @@ typedef struct {
double dummy2;
} RegressLikeGnomeKeyringPasswordSchema;
-/* https://bugzilla.gnome.org/show_bug.cgi?id=685022 */
-#define REGRESS_MININT64 ((gint64) G_GINT64_CONSTANT(0x8000000000000000))
-#define REGRESS_MAXUINT64 (G_GINT64_CONSTANT(0xffffffffffffffffU))
-
#endif /* __GITESTTYPES_H__ */