Skip to content

[core] Handle non-space whitespace in TClassEdit::CleanType#22766

Merged
guitargeek merged 1 commit into
root-project:masterfrom
guitargeek:issue-22359
Jul 11, 2026
Merged

[core] Handle non-space whitespace in TClassEdit::CleanType#22766
guitargeek merged 1 commit into
root-project:masterfrom
guitargeek:issue-22359

Conversation

@guitargeek

Copy link
Copy Markdown
Contributor

A class name in a selection XML can span multiple lines. CleanType() only treated ' ' as a blank, so a newline was kept in the cleaned name and, when the template arguments were later re-processed individually, an argument starting with a newline was truncated to an empty string. This corrupted the rootmap entries and the alternate name registrations (e.g. "Foo<,vector<float>,>"), leading to "Second registration of ..." errors from TClassTable::AddAlternate at library load time.

Treat all whitespace like a space: drop it where a space would be dropped, and emit a single plain space where it separates two identifiers.

Closes #22359.

🤖 Done with the help of AI.

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown

Test Results

    23 files      23 suites   3d 16h 29m 59s ⏱️
 3 872 tests  3 865 ✅   0 💤 7 ❌
78 787 runs  78 670 ✅ 110 💤 7 ❌

For more details on these failures, see this check.

Results for commit 86afdaf.

♻️ This comment has been updated with latest results.

Comment thread core/foundation/src/TClassEdit.cxx
A class name in a selection XML can span multiple lines. `CleanType()`
only treated `' '` as a blank, so a newline was kept in the cleaned name
and, when the template arguments were later re-processed individually,
an argument starting with a newline was truncated to an empty string.
This corrupted the rootmap entries and the alternate name registrations
(e.g. `"Foo<,vector<float>,>"`), leading to `"Second registration of
..."` errors from `TClassTable::AddAlternate` at library load time.

Treat all whitespace like a space: drop it where a space would be
dropped, and emit a single plain space where it separates two
identifiers.

Closes root-project#22359.

🤖 Done with the help of AI.

@dpiparo dpiparo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot for this!

@guitargeek
guitargeek merged commit 9d59a11 into root-project:master Jul 11, 2026
83 of 86 checks passed
@guitargeek
guitargeek deleted the issue-22359 branch July 11, 2026 06:21
@makortel

Copy link
Copy Markdown

Thanks. Would it be possible to backport this PR to 6.40 and 6.36?

@guitargeek

Copy link
Copy Markdown
Contributor Author

/backport to 6.40, 6.36

@root-project-bot

Copy link
Copy Markdown

Preparing to backport PR #22766 to branches 6.40 and 6.36 requested by guitargeek

@root-project-bot

Copy link
Copy Markdown

Something went wrong when assigning the PR or setting labels @guitargeek please see the logs

@root-project-bot

Copy link
Copy Markdown

Something went wrong when assigning the PR or setting labels @guitargeek please see the logs

@root-project-bot

Copy link
Copy Markdown

@makortel

Copy link
Copy Markdown

Thanks for the backports!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

"Second registration of" error with a template argument "missing"

5 participants