diff mercurial/cext/util.h @ 47975:ec178161a8d1

dirstate: make dirstate flags char be unsigned Since https://phab.mercurial-scm.org/D11387, `CC='clang -Werror' make local` has started failing like this: ``` mercurial/cext/util.h:41:50: error: implicit conversion from 'int' to 'char' changes value from 128 to -128 [-Werror,-Wconstant-conversion] static const char dirstate_flag_rust_special = 1 << 7; ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~^~~~ ``` This patch fixes that by making the flags be an unsigned char. That also matches the `bool` typedef we have in `util.h`, which seems good since many of the `dirstate_item_c_*()` functions return a `bool`. Differential Revision: https://phab.mercurial-scm.org/D11444
author Martin von Zweigbergk <martinvonz@google.com>
date Thu, 16 Sep 2021 16:29:55 -0700
parents 83f0e93ec34b
children 631f6b445a77
line wrap: on
line diff
--- a/mercurial/cext/util.h	Thu Sep 02 03:59:35 2021 +0200
+++ b/mercurial/cext/util.h	Thu Sep 16 16:29:55 2021 -0700
@@ -24,21 +24,21 @@
 /* clang-format off */
 typedef struct {
 	PyObject_HEAD
-	char flags;
+	unsigned char flags;
 	int mode;
 	int size;
 	int mtime;
 } dirstateItemObject;
 /* clang-format on */
 
-static const char dirstate_flag_wc_tracked = 1;
-static const char dirstate_flag_p1_tracked = 1 << 1;
-static const char dirstate_flag_p2_tracked = 1 << 2;
-static const char dirstate_flag_possibly_dirty = 1 << 3;
-static const char dirstate_flag_merged = 1 << 4;
-static const char dirstate_flag_clean_p1 = 1 << 5;
-static const char dirstate_flag_clean_p2 = 1 << 6;
-static const char dirstate_flag_rust_special = 1 << 7;
+static const unsigned char dirstate_flag_wc_tracked = 1;
+static const unsigned char dirstate_flag_p1_tracked = 1 << 1;
+static const unsigned char dirstate_flag_p2_tracked = 1 << 2;
+static const unsigned char dirstate_flag_possibly_dirty = 1 << 3;
+static const unsigned char dirstate_flag_merged = 1 << 4;
+static const unsigned char dirstate_flag_clean_p1 = 1 << 5;
+static const unsigned char dirstate_flag_clean_p2 = 1 << 6;
+static const unsigned char dirstate_flag_rust_special = 1 << 7;
 
 extern PyTypeObject dirstateItemType;
 #define dirstate_tuple_check(op) (Py_TYPE(op) == &dirstateItemType)