diff options
author | root <root@rshg054.dnsready.net> | 2012-01-27 23:15:06 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-01-27 23:15:06 +0000 |
commit | 2493f16093b14a81e949bd6a1b89724cb931807d (patch) | |
tree | b93ed56dddfb9e067d0e29e363bc8e98286b9ac8 /community-staging/root/fix-mathcore-generation-r42566.diff | |
parent | 3741146d50cb93e8985f8aac937e36d35ee76446 (diff) |
Fri Jan 27 23:15:06 UTC 2012
Diffstat (limited to 'community-staging/root/fix-mathcore-generation-r42566.diff')
-rw-r--r-- | community-staging/root/fix-mathcore-generation-r42566.diff | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/community-staging/root/fix-mathcore-generation-r42566.diff b/community-staging/root/fix-mathcore-generation-r42566.diff new file mode 100644 index 000000000..ae22c23c0 --- /dev/null +++ b/community-staging/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); |