I agree, but consider something like this:
PIKECLASS FooConnection { foo_handle *con; INIT { .. set con .. } EXIT { .. release con .. } PIKEFUN string library_version() { push_constant_text(foo_library_version(THIS->con)); } } In this case it might be expected that the value returned from foo_library_version will not change, but perhaps it is free:d when exit is called on the class. But, yes, push_constant_text should not be used for this case, no.