Then there is no problem with PrintWarn (at least it sounds like your problem has nothing to do with PrintWarn). You can change the behavior with HandleSetErr, but why are you printing errstr or even caring what is in errstr if there are no errors? The problem resolution seems like it should be "Don't print errstr if there are no errors detected".