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.