Wrap PyObject_Get/HasAttrString in a function with second arg having const qualifier.

Message ID CAGyQ6gxXS9rNjr+o+cOLPypVZV7hJo2KjatnNKS4GuP_+jTRwg@mail.gmail.com
State New, archived
Headers

Commit Message

Siva Chandra Reddy June 10, 2014, 6:56 p.m. UTC
  On Tue, Jun 10, 2014 at 11:56 AM, Siva Chandra <sivachandra@google.com> wrote:
> Thanks for the quick review. I have pushed the attached patch which
> includes the doc fixes suggested by Pedro.

Ah! The patch is attached now!
  

Patch

diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
index 54da67a..8532da6 100644
--- a/gdb/python/py-value.c
+++ b/gdb/python/py-value.c
@@ -554,8 +554,7 @@  static int
 get_field_flag (PyObject *field, const char *flag_name)
 {
   int flag_value;
-  /* Python 2.4 did not have a 'const' here.  */
-  PyObject *flag_object = PyObject_GetAttrString (field, (char *) flag_name);
+  PyObject *flag_object = PyObject_GetAttrString (field, flag_name);
 
   if (flag_object == NULL)
     return -1;
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
index 9c06621..0198e9d 100644
--- a/gdb/python/python-internal.h
+++ b/gdb/python/python-internal.h
@@ -187,6 +187,32 @@  gdb_Py_DECREF (void *op) /* ARI: editCase function */
 #undef Py_DECREF
 #define Py_DECREF(op) gdb_Py_DECREF (op)
 
+/* The second argument to PyObject_GetAttrString was missing the 'const'
+   qualifier in Python-2.4.  Hence, we wrap it in a function to avoid errors
+   when compiled with -Werror.  */
+
+static inline PyObject *
+gdb_PyObject_GetAttrString (PyObject *obj,
+			    const char *attr) /* ARI: editCase function */
+{
+  return PyObject_GetAttrString (obj, (char *) attr);
+}
+
+#define PyObject_GetAttrString(obj, attr) gdb_PyObject_GetAttrString (obj, attr)
+
+/* The second argument to PyObject_HasAttrString was also missing the 'const'
+   qualifier in Python-2.4.  Hence, we wrap it also in a function to avoid
+   errors when compiled with -Werror.  */
+
+static inline int
+gdb_PyObject_HasAttrString (PyObject *obj,
+			    const char *attr)  /* ARI: editCase function */
+{
+  return PyObject_HasAttrString (obj, (char *) attr);
+}
+
+#define PyObject_HasAttrString(obj, attr) gdb_PyObject_HasAttrString (obj, attr)
+
 /* In order to be able to parse symtab_and_line_to_sal_object function
    a real symtab_and_line structure is needed.  */
 #include "symtab.h"