diff options
| author | Michael R Sweet <michael.r.sweet@gmail.com> | 2007-01-03 02:56:36 +0000 |
|---|---|---|
| committer | Michael R Sweet <michael.r.sweet@gmail.com> | 2007-01-03 02:56:36 +0000 |
| commit | e806450644365883a6561552bdb2dc65566a8e20 (patch) | |
| tree | b7e8bbd5db483b63a7fd1c23872e5ee2bbcf6716 /fluid | |
| parent | 230a2a4332d9ac83ad2ca588c353e0dcfc3535ff (diff) | |
Use strspn() to look at full words (better "o" detection)
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5577 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'fluid')
| -rw-r--r-- | fluid/Fl_Widget_Type.cxx | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/fluid/Fl_Widget_Type.cxx b/fluid/Fl_Widget_Type.cxx index 64d657f12..69c7dc07c 100644 --- a/fluid/Fl_Widget_Type.cxx +++ b/fluid/Fl_Widget_Type.cxx @@ -1995,19 +1995,22 @@ void Fl_Widget_Type::write_code1() { { int instring = 0; int inname = 0; - for (ptr = extra_code(n); *ptr; ptr ++) + for (ptr = extra_code(n); *ptr; ptr ++) { if (instring) { if (*ptr == '\\') ptr++; else if (*ptr == '\"') instring = 0; } else if (inname && !isalnum(*ptr & 255)) inname = 0; else if (*ptr == '\"') instring = 1; - else if (!strncmp(ptr, "o->", 3) || !strncmp(ptr, "o)", 2) || - !strncmp(ptr, "o,", 2) || !strncmp(ptr, "o ", 2)) break; - else if (isalnum(*ptr & 255)) inname = 1; - - if (*ptr) { - varused = 1; - break; + else if (isalnum(*ptr & 255) || *ptr == '_') { + size_t len = strspn(ptr, "0123456789_" + "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); + + if (!strncmp(ptr, "o", len)) { + varused = 1; + break; + } else ptr += len - 1; + } } } } |
