From 79983be5a027c0ff8a7ef7a8f67481ce61efc523 Mon Sep 17 00:00:00 2001 From: Paul Hoad Date: Wed, 18 Sep 2019 18:57:09 +0000 Subject: [clang-format][PR41964] Fix crash with SIGFPE when TabWidth is set to 0 and line starts with tab Summary: clang-format 8.0 crashes with SIGFPE (floating point exception) when formatting following file: app.cpp: void a() { //line starts with '\t' } $ clang-format -style='{TabWidth: 0}' app.cpp Reviewers: owenpan, klimek, russellmcc, timwoj Reviewed By: klimek Subscribers: cfe-commits Tags: #clang-tools-extra, #clang Differential Revision: https://reviews.llvm.org/D67670 llvm-svn: 372246 --- clang/lib/Format/Encoding.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'clang/lib/Format/Encoding.h') diff --git a/clang/lib/Format/Encoding.h b/clang/lib/Format/Encoding.h index fe3d5f01985..a0d664121b2 100644 --- a/clang/lib/Format/Encoding.h +++ b/clang/lib/Format/Encoding.h @@ -67,7 +67,8 @@ inline unsigned columnWidthWithTabs(StringRef Text, unsigned StartColumn, if (TabPos == StringRef::npos) return TotalWidth + columnWidth(Tail, Encoding); TotalWidth += columnWidth(Tail.substr(0, TabPos), Encoding); - TotalWidth += TabWidth - (TotalWidth + StartColumn) % TabWidth; + if (TabWidth) + TotalWidth += TabWidth - (TotalWidth + StartColumn) % TabWidth; Tail = Tail.substr(TabPos + 1); } } -- cgit v1.2.3