diff options
author | root <root@rshg054.dnsready.net> | 2012-02-06 23:14:50 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-02-06 23:14:50 +0000 |
commit | 1fa6edfba8d1e31ca1c0d59e8202cd3c62ccf393 (patch) | |
tree | 8d7ccc2dc9d08a4c3cde26aa01c887e9a0fc2fa1 /community/root/fix-mathcore-generation-r42566.diff | |
parent | bdb5b3e66f6afa586ea147f69af5e4ba388f7615 (diff) |
Mon Feb 6 23:14:50 UTC 2012
Diffstat (limited to 'community/root/fix-mathcore-generation-r42566.diff')
-rw-r--r-- | community/root/fix-mathcore-generation-r42566.diff | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/community/root/fix-mathcore-generation-r42566.diff b/community/root/fix-mathcore-generation-r42566.diff new file mode 100644 index 000000000..ae22c23c0 --- /dev/null +++ b/community/root/fix-mathcore-generation-r42566.diff @@ -0,0 +1,40 @@ +Index: cint/cint/src/typedef.cxx +=================================================================== +--- cint/cint/src/typedef.cxx (revision 42564) ++++ cint/cint/src/typedef.cxx (revision 42566) +@@ -297,18 +297,27 @@ + } + c = G__fgetname_template(type1, 0, "{"); + } +- if (!strcmp(type1, "::")) { // FIXME: This makes no sense, there cannot be typedef ::{...}; ++ if (!strcmp(type1, "::")) { + // skip a :: without a namespace in front of it (i.e. global namespace!) + c = G__fgetspace(); // skip the next ':' + c = G__fgetname_template(type1, 0, "{"); + } +- if (!strncmp(type1, "::", 2)) { // Strip a leading :: (global namespace operator) +- // A leading '::' causes other typename matching functions to fail so +- // we remove it. This is not the ideal solution (neither was the one +- // above since it does not allow for distinction between global +- // namespace and local namespace) ... but at least it is an improvement +- // over the current behavior. +- strcpy((char*)type1, type1 + 2); // Okay since we reduce the size ... ++ if (!strncmp(type1, "::", 2)) { ++ // Strip a leading :: (global namespace operator). ++ // A leading '::' causes other typename matching ++ // functions to fail so we remove it. This is not ++ // the ideal solution (neither is the one above) ++ // since it does not allow for decriminating between ++ // global namespace and local namespace, but at ++ // least it is an improvement over the current ++ // behavior. ++ // ++ // Note: We must use memmove because the source ++ // and destination strings overlap! ++ // ++ int t1len = strlen(type1); ++ memmove(type1, type1 + 2, t1len - 2); ++ type1.Set(t1len - 2, '\0'); + } + while (isspace(c)) { + len = strlen(type1); |