-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Fix issue #6670. Avoid infinite recursion from TClass::InheritsFrom. #6680
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Starting build on |
core/meta/src/TProtoClass.cxx
Outdated
| return kFALSE; | ||
| } | ||
| if (cl->Property() & kIsNamespace) { | ||
| if (cl->fProperty != (-1) && cl->fProperty & kIsNamespace) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Except for the EProperty values and 0 and -1, is there any other value fProperty could have? I assume -1 == error in contrast to 0 == unknown? This information would be useful to have as as a member documentation for fProperty.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
0 isn't a thing for fProperty, and isn't tested for in the original code or Philippe's modification. fProperty & kIsWhatever checks whether the class is a whatever. -1 is the default value of fProperty, stating "we have not determined the class's properties yet" (i.e. Property() has not been called yet)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-1 means unset. 0 would means all properties was found to be 'false'.
Yes, I need to update the documentation :)
core/meta/src/TProtoClass.cxx
Outdated
| return kFALSE; | ||
| } | ||
| if (cl->Property() & kIsNamespace) { | ||
| if (cl->fProperty != (-1) && cl->fProperty & kIsNamespace) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| if (cl->fProperty != (-1) && cl->fProperty & kIsNamespace) { | |
| if (cl->fProperty != -1 && (cl->fProperty & kIsNamespace)) { |
…heritsFrom. Do not inadvertently request TClass::fProperty's initialization during TProtoClass::FillTClass, the former ends up calling TProtoClass::FillTClass thus leading to an infinite recursion.
|
Starting build on |
|
Starting build on |
core/meta/src/TClass.cxx
Outdated
| //////////////////////////////////////////////////////////////////////////////// | ||
| /// Set TObject::fBits and fStreamerType to cache information about the | ||
| /// class. The bits are | ||
| /// Returns the properties of the TClass a bit field stored as a `Long_t` value. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| /// Returns the properties of the TClass a bit field stored as a `Long_t` value. | |
| /// Returns the properties of the TClass as a bit field stored as a `Long_t` value. |
|
Starting build on |
|
Build failed on mac1015/cxx17. Failing tests: |
|
Starting build on |
|
Build failed on ROOT-fedora31/noimt. Failing tests:
|
|
Build failed on ROOT-fedora30/cxx14. Failing tests:
|
|
Starting build on |
|
Build failed on mac1015/cxx17. Errors:
|
|
Build failed on ROOT-fedora31/noimt. Failing tests: |
|
Build failed on ROOT-performance-centos8-multicore/default. Failing tests:
|
|
Build failed on ROOT-fedora30/cxx14. Failing tests: |
|
Build failed on ROOT-ubuntu16/nortcxxmod. Failing tests: |
|
Build failed on ROOT-debian10-i386/cxx14. Failing tests: |
…for a file name match (eg. defined_in)
|
Starting build on |
|
Build failed on mac1015/cxx17. Errors:
|
|
Build failed on ROOT-fedora30/cxx14. Failing tests: |
|
Build failed on ROOT-ubuntu16/nortcxxmod. Failing tests: |
|
@phsft-bot build with flags -DCTEST_TEST_EXCLUDE_NONE=On |
|
Starting build on |
|
Build failed on mac1015/cxx17. Errors:
|
|
Build failed on ROOT-ubuntu16/nortcxxmod. Failing tests: |
|
Build failed on ROOT-fedora30/cxx14. Errors:
Failing tests: |
|
Build failed on mac1014/python3. Failing tests: |
|
Build failed on windows10/cxx14. Errors:
Failing tests: |
|
Build failed on ROOT-debian10-i386/cxx14. Errors:
Failing tests: |
|
@phsft-bot build with flags -DCTEST_TEST_EXCLUDE_NONE=On |
|
Starting build on |
|
Build failed on mac1015/cxx17. Errors:
Failing tests: |
|
Build failed on ROOT-fedora30/cxx14. Errors:
Failing tests: |
|
Build failed on windows10/cxx14. Errors:
Failing tests: |
|
Build failed on ROOT-debian10-i386/cxx14. Errors:
Failing tests: |
|
The failures are unrelated. |
Do not inadvertently request TClass::fProperty's initialization during TProtoClass::FillTClass,
the former ends up calling TProtoClass::FillTClass thus leading to an infinite recursion.