diff mbox

package/fbterm: fix C++11 compliance with gcc-6

Message ID 1471100701-16324-1-git-send-email-yann.morin.1998@free.fr
State Accepted
Headers show

Commit Message

Yann E. MORIN Aug. 13, 2016, 3:05 p.m. UTC
gcc-6 has enabled more warnings by default, and turned some existing
warnings into errors.

Fixes (all on arc or arm):
    http://autobuild.buildroot.org/results/8c4/8c4a6cf492bccf4e1b99897bd9658e21b89b31ab/
    http://autobuild.buildroot.org/results/875/875a9deb15d47d348bb53dafdbb7ed2f2bbd3da8/
    http://autobuild.buildroot.org/results/af4/af4935f0ad2054b7dc2443e2d126fe8e50996f66/
    [...]

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/fbterm/0003-C++11-compliance.patch | 93 ++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)
 create mode 100644 package/fbterm/0003-C++11-compliance.patch

Comments

Arnout Vandecappelle Aug. 13, 2016, 5:52 p.m. UTC | #1
On 13-08-16 17:05, Yann E. MORIN wrote:
> gcc-6 has enabled more warnings by default, and turned some existing
> warnings into errors.
> 
> Fixes (all on arc or arm):
>     http://autobuild.buildroot.org/results/8c4/8c4a6cf492bccf4e1b99897bd9658e21b89b31ab/
>     http://autobuild.buildroot.org/results/875/875a9deb15d47d348bb53dafdbb7ed2f2bbd3da8/
>     http://autobuild.buildroot.org/results/af4/af4935f0ad2054b7dc2443e2d126fe8e50996f66/
>     [...]
> 
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>


 Regards,
 Arnout

> ---
>  package/fbterm/0003-C++11-compliance.patch | 93 ++++++++++++++++++++++++++++++
>  1 file changed, 93 insertions(+)
>  create mode 100644 package/fbterm/0003-C++11-compliance.patch
> 
> diff --git a/package/fbterm/0003-C++11-compliance.patch b/package/fbterm/0003-C++11-compliance.patch
> new file mode 100644
> index 0000000..3529a50
> --- /dev/null
> +++ b/package/fbterm/0003-C++11-compliance.patch
> @@ -0,0 +1,93 @@
> +lib/vterm_states: fix C++11 compliance
> +
> +In C++11, narrowing a type is no longer allowed in structure
> +initialszers:
> +
> +    struct foo { u16 u; };
> +    foo f[] = { {0}, {-1} };
> +
> +results in the gcc-6 to whine out loudly, and fail:
> +
> +    error: narrowing conversion of ‘-1’ from ‘int’ to ‘u16 {aka short unsigned int}’ inside { } [-Wnarrowing]
> +     };
> +     ^
> +
> +Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> +
> +diff -durN fbterm-1.7.0.orig/src/lib/vterm_states.cpp fbterm-1.7.0/src/lib/vterm_states.cpp
> +--- fbterm-1.7.0.orig/src/lib/vterm_states.cpp	2010-10-06 06:23:08.000000000 +0200
> ++++ fbterm-1.7.0/src/lib/vterm_states.cpp	2016-08-13 16:54:29.495451127 +0200
> +@@ -22,6 +22,7 @@
> + #include "vterm.h"
> + 
> + #define ADDSAME(len) ((len) << 8)
> ++#define ENDSEQ  { ((u16)-1) }
> + 
> + const VTerm::Sequence VTerm::control_sequences[] = {
> + 	{ 0,	0,	ESkeep },
> +@@ -39,14 +40,14 @@
> + 	{ 0x1B, 0,	ESesc },
> + 	{ 0x7F, 0,	ESkeep },
> + 	{ 0x9B, 0,	ESsquare },
> +-	{ -1}
> ++	ENDSEQ
> + };
> + 
> + const VTerm::Sequence VTerm::escape_sequences[] = {
> + 	{   0, 0, ESnormal },
> + 
> + 	// ESnormal
> +-	{ -1 },
> ++	ENDSEQ,
> + 
> + 	// ESesc
> + 	{ '[', &VTerm::clear_param,	ESsquare },
> +@@ -65,7 +66,7 @@
> + 	{ '8', &VTerm::restore_cursor,	ESnormal },
> + 	{ '>', &VTerm::keypad_numeric,	ESnormal },
> + 	{ '=', &VTerm::keypad_application,	ESnormal },
> +-	{ -1 },
> ++	ENDSEQ,
> + 
> + 	// ESsquare
> + 	{ '[', 0,	ESfunckey },
> +@@ -104,7 +105,7 @@
> + 	{ '`', &VTerm::cursor_position_col,	ESnormal },
> + 	{ ']', &VTerm::linux_specific, ESnormal },
> + 	{ '}', &VTerm::fbterm_specific, ESnormal },
> +-	{ -1 },
> ++	ENDSEQ,
> + 
> + 	// ESnonstd
> + 	{ '0' | ADDSAME(9), &VTerm::set_palette,    ESkeep },
> +@@ -112,25 +113,25 @@
> + 	{ 'a' | ADDSAME(5), &VTerm::set_palette,    ESkeep },
> + 	{ 'P', &VTerm::begin_set_palette, ESkeep },
> + 	{ 'R', &VTerm::reset_palette, ESnormal },
> +-	{ -1 },
> ++	ENDSEQ,
> + 
> + 	// ESpercent
> + 	{ '@', &VTerm::clear_utf8,	ESnormal },
> + 	{ 'G', &VTerm::set_utf8,	ESnormal },
> + 	{ '8', &VTerm::set_utf8,	ESnormal },
> +-	{ -1 },
> ++	ENDSEQ,
> + 
> + 	// EScharset
> + 	{ '0', &VTerm::set_charset, ESnormal },
> + 	{ 'B', &VTerm::set_charset, ESnormal },
> + 	{ 'U', &VTerm::set_charset, ESnormal },
> + 	{ 'K', &VTerm::set_charset, ESnormal },
> +-	{ -1 },
> ++	ENDSEQ,
> + 
> + 	// EShash
> + 	{ '8', &VTerm::screen_align,	ESnormal },
> +-	{ -1 },
> ++	ENDSEQ,
> + 
> + 	// ESfunckey
> +-	{ -1 },
> ++	ENDSEQ,
> + };
>
diff mbox

Patch

diff --git a/package/fbterm/0003-C++11-compliance.patch b/package/fbterm/0003-C++11-compliance.patch
new file mode 100644
index 0000000..3529a50
--- /dev/null
+++ b/package/fbterm/0003-C++11-compliance.patch
@@ -0,0 +1,93 @@ 
+lib/vterm_states: fix C++11 compliance
+
+In C++11, narrowing a type is no longer allowed in structure
+initialszers:
+
+    struct foo { u16 u; };
+    foo f[] = { {0}, {-1} };
+
+results in the gcc-6 to whine out loudly, and fail:
+
+    error: narrowing conversion of ‘-1’ from ‘int’ to ‘u16 {aka short unsigned int}’ inside { } [-Wnarrowing]
+     };
+     ^
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+diff -durN fbterm-1.7.0.orig/src/lib/vterm_states.cpp fbterm-1.7.0/src/lib/vterm_states.cpp
+--- fbterm-1.7.0.orig/src/lib/vterm_states.cpp	2010-10-06 06:23:08.000000000 +0200
++++ fbterm-1.7.0/src/lib/vterm_states.cpp	2016-08-13 16:54:29.495451127 +0200
+@@ -22,6 +22,7 @@
+ #include "vterm.h"
+ 
+ #define ADDSAME(len) ((len) << 8)
++#define ENDSEQ  { ((u16)-1) }
+ 
+ const VTerm::Sequence VTerm::control_sequences[] = {
+ 	{ 0,	0,	ESkeep },
+@@ -39,14 +40,14 @@
+ 	{ 0x1B, 0,	ESesc },
+ 	{ 0x7F, 0,	ESkeep },
+ 	{ 0x9B, 0,	ESsquare },
+-	{ -1}
++	ENDSEQ
+ };
+ 
+ const VTerm::Sequence VTerm::escape_sequences[] = {
+ 	{   0, 0, ESnormal },
+ 
+ 	// ESnormal
+-	{ -1 },
++	ENDSEQ,
+ 
+ 	// ESesc
+ 	{ '[', &VTerm::clear_param,	ESsquare },
+@@ -65,7 +66,7 @@
+ 	{ '8', &VTerm::restore_cursor,	ESnormal },
+ 	{ '>', &VTerm::keypad_numeric,	ESnormal },
+ 	{ '=', &VTerm::keypad_application,	ESnormal },
+-	{ -1 },
++	ENDSEQ,
+ 
+ 	// ESsquare
+ 	{ '[', 0,	ESfunckey },
+@@ -104,7 +105,7 @@
+ 	{ '`', &VTerm::cursor_position_col,	ESnormal },
+ 	{ ']', &VTerm::linux_specific, ESnormal },
+ 	{ '}', &VTerm::fbterm_specific, ESnormal },
+-	{ -1 },
++	ENDSEQ,
+ 
+ 	// ESnonstd
+ 	{ '0' | ADDSAME(9), &VTerm::set_palette,    ESkeep },
+@@ -112,25 +113,25 @@
+ 	{ 'a' | ADDSAME(5), &VTerm::set_palette,    ESkeep },
+ 	{ 'P', &VTerm::begin_set_palette, ESkeep },
+ 	{ 'R', &VTerm::reset_palette, ESnormal },
+-	{ -1 },
++	ENDSEQ,
+ 
+ 	// ESpercent
+ 	{ '@', &VTerm::clear_utf8,	ESnormal },
+ 	{ 'G', &VTerm::set_utf8,	ESnormal },
+ 	{ '8', &VTerm::set_utf8,	ESnormal },
+-	{ -1 },
++	ENDSEQ,
+ 
+ 	// EScharset
+ 	{ '0', &VTerm::set_charset, ESnormal },
+ 	{ 'B', &VTerm::set_charset, ESnormal },
+ 	{ 'U', &VTerm::set_charset, ESnormal },
+ 	{ 'K', &VTerm::set_charset, ESnormal },
+-	{ -1 },
++	ENDSEQ,
+ 
+ 	// EShash
+ 	{ '8', &VTerm::screen_align,	ESnormal },
+-	{ -1 },
++	ENDSEQ,
+ 
+ 	// ESfunckey
+-	{ -1 },
++	ENDSEQ,
+ };