MySQL 5.7.29 includes the following bug fix:
Bug#30342846 : N_EXT CALCULATION IS NOT CORRECT WHICH CAUSES WRONG RECORD SIZE CALCULATION
This refines an earlier fix in MySQL 5.7.5. I verified that the changed code is covered by the test innodb.blob-crash.
The fix does not include any test case, and the consequences of this bug are unclear to me. Possibly some data corruption caused by counting some off-page columns twice?
Note: InnoDB treats a long enough VARCHAR (or even CHAR) in the same way as BLOB and TEXT and similar data types.
I did review the original change. Before that, an UPDATE operation in InnoDB was not always crash-safe. The fix was that if a non-updated column needs to be moved to off-page storage, we must include it in the undo log record.