blog2018-09-20バグ直した。バグ修正の依頼があったのでコネコネとさばく。今日のバグはこんなの。「文字列をnバイトで切断する処理にて全角文字の真ん中をぶったぎってしまう」"ABCDEあい"を8バイトで切る処理にて"ABCDEあ"ここまでで7バイト。"い"をつけると9バイトになるのでやめて半角スペース補充で終了させておくのが本来の要求だが、”い"の文字コードの前半部分がまでくっつけてくれているというバグ。データベースの都合で文字列をバイト単位で切断する必要があるのですが、弊現場では極めてまれな扱いのために当初の開発担当者は慣れておらずにバグを出してしまったもよう。5年ほどバレなかったためにバグ出した当人は逃げおおせたが後任のおいらが対応することになりました。いうしょうもないバグは修正が楽しい。nバイト("ABCDEFGH")・切断対象文字列がnバイト未満("ABCDEFG")・切断対象文字列が空文字("")・切断対象文字列がnバイト超かつ切断箇所が全角文字の真ん中ではない("ABCDEFGHI")・切断対象文字列がnバイト超かつ切断箇所が全角文字の真ん中("ABCDEFGHあ")で、ユニットテストを実行して最後のだけ×になることを確認してメソッドをいじくりまわしつつユニットテストを実行。