[go: up one dir, main page]

Page MenuHomePhabricator

The internal cache used by Title::newFromText gets corrupted when Title instances are modified.
Closed, ResolvedPublic

Description

Title::newFromText() uses an internal cache that assumes Title instances are immutable value objects (or at the most, get updated to reflect the current state of the database).

However, there are some modifier methods on Title that break this assumptions, namely setFragment() and setContentModel(). Calling these on a Title constructed via makeTitle() is fine, calling them on a Title constructed via newFRomText() will corrupt the cache by modifying the cached instance.

This is highly surprising to callers, and can lead to obscure bugs.