summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2012-12-14 07:38:44 +0000
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2012-12-14 07:38:44 +0000
commit1ab67f5bed7e10f4f67dda4d2d161e3e881bbbce (patch)
tree5889fc4de4f9566378bdf34b1475dc48a403c889 /Source
parent2939f181f138671d2a3ff60b054e7e4bd81820e4 (diff)
downloadswig-1ab67f5bed7e10f4f67dda4d2d161e3e881bbbce.tar.gz
Fix CFFI incorrect constant names
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13962 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'Source')
-rw-r--r--Source/Modules/cffi.cxx12
1 files changed, 8 insertions, 4 deletions
diff --git a/Source/Modules/cffi.cxx b/Source/Modules/cffi.cxx
index c2c79b007..d3f0391d0 100644
--- a/Source/Modules/cffi.cxx
+++ b/Source/Modules/cffi.cxx
@@ -1031,10 +1031,14 @@ String *CFFI::convert_literal(String *literal, String *type, bool try_to_split)
return result;
} else if (SwigType_type(type) == T_INT || SwigType_type(type) == T_UINT) {
// Printf(stderr, "Is a T_INT or T_UINT %s, before replaceall\n", s);
- Replaceall(num, "u", "");
- Replaceall(num, "U", "");
- Replaceall(num, "l", "");
- Replaceall(num, "L", "");
+ const char *num_start = Char(num);
+ bool is_literal = isdigit(*num_start) || (*num_start == '.') || (*num_start == '+') || (*num_start == '-');
+ if (is_literal) {
+ Replaceall(num, "u", "");
+ Replaceall(num, "U", "");
+ Replaceall(num, "l", "");
+ Replaceall(num, "L", "");
+ }
int i, j;
if (sscanf(s, "%d >> %d", &i, &j) == 2) {