On 21/01/2026 1:44, Jakub Kicinski wrote: > On Tue, 20 Jan 2026 14:47:33 +0200 Gal Pressman wrote: >> The __exit__ method receives ex_type as the exception class when an >> exception occurs. The previous code used implicit boolean evaluation: >> >> terminate = self.terminate or (self._exit_wait and ex_type) >> ^^^^^^^^^^^ >> >> In Python, the and operator can be used with non-boolean values, but it >> does not always return a boolean result. >> >> This is probably not what we want, because 'self._exit_wait and ex_type' >> could return the actual ex_type value (the exception class) rather than >> a boolean True when an exception occurs. >> >> Use explicit `ex_type is not None` check to properly evaluate whether >> an exception occurred, returning a boolean result. > > Sure, the checkers complain about this, but I don't see an actual bug > here. bool(terminate) must evaluate correctly, we don't compare it > to True or False explicitly. > > To be clear - the patch LGTM, I'm just not connecting the dots on why > its a fix at this stage.
Right, the code probably works regardless of this fix. The reason I submitted this as a fix is because surely there was no intention for 'terminate' to be non-boolean. Take the patch to net-next instead? BTW, I encountered this issue while debugging some tests and dumping various states, the value of 'terminate' confused me.
