diff mbox

Remove duplicate code to init python objfile/progspace objects

Message ID yjt2a955qlvw.fsf@ruffy.mtv.corp.google.com
State New
Headers show

Commit Message

Doug Evans Oct. 9, 2014, 3:54 p.m. UTC
Hi.

This patch just removes some duplicate code.

2014-10-09  Doug Evans  <dje@google.com>

	* py-objfile.c (objfpy_initialize): New function.
	(objfpy_new, objfile_to_objfile_object): Call it.
	* py-progspace.c (pspy_initialize): New function.
	(pspy_new, pspace_to_pspace_object): Call it.

Comments

Doug Evans Oct. 13, 2014, 8:01 p.m. UTC | #1
Doug Evans writes:
 > Hi.
 > 
 > This patch just removes some duplicate code.
 > 
 > 2014-10-09  Doug Evans  <dje@google.com>
 > 
 > 	* py-objfile.c (objfpy_initialize): New function.
 > 	(objfpy_new, objfile_to_objfile_object): Call it.
 > 	* py-progspace.c (pspy_initialize): New function.
 > 	(pspy_new, pspace_to_pspace_object): Call it.

Committed.
Phil Muldoon Oct. 13, 2014, 8:20 p.m. UTC | #2
On 13/10/14 21:01, Doug Evans wrote:
> Doug Evans writes:
>  > Hi.
>  > 
>  > This patch just removes some duplicate code.
>  > 
>  > 2014-10-09  Doug Evans  <dje@google.com>
>  > 
>  > 	* py-objfile.c (objfpy_initialize): New function.
>  > 	(objfpy_new, objfile_to_objfile_object): Call it.
>  > 	* py-progspace.c (pspy_initialize): New function.
>  > 	(pspy_new, pspace_to_pspace_object): Call it.
>
> Committed.
Doug,

Thanks for doing this.

Regards,

Phil
diff mbox

Patch

diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c
index 5d00d62..df29691 100644
--- a/gdb/python/py-objfile.c
+++ b/gdb/python/py-objfile.c
@@ -74,6 +74,33 @@  objfpy_dealloc (PyObject *o)
   Py_TYPE (self)->tp_free (self);
 }
 
+/* Initialize an objfile_object.
+   The result is a boolean indicating success.  */
+
+static int
+objfpy_initialize (objfile_object *self)
+{
+  self->objfile = NULL;
+
+  self->printers = PyList_New (0);
+  if (self->printers == NULL)
+    return 0;
+
+  self->frame_filters = PyDict_New ();
+  if (self->frame_filters == NULL)
+    return 0;
+
+  self->type_printers = PyList_New (0);
+  if (self->type_printers == NULL)
+    return 0;
+
+  self->xmethods = PyList_New (0);
+  if (self->xmethods == NULL)
+    return 0;
+
+  return 1;
+}
+
 static PyObject *
 objfpy_new (PyTypeObject *type, PyObject *args, PyObject *keywords)
 {
@@ -81,36 +108,13 @@  objfpy_new (PyTypeObject *type, PyObject *args, PyObject *keywords)
 
   if (self)
     {
-      self->objfile = NULL;
-
-      self->printers = PyList_New (0);
-      if (!self->printers)
-	{
-	  Py_DECREF (self);
-	  return NULL;
-	}
-
-      self->frame_filters = PyDict_New ();
-      if (!self->frame_filters)
-	{
-	  Py_DECREF (self);
-	  return NULL;
-	}
-
-      self->type_printers = PyList_New (0);
-      if (!self->type_printers)
-	{
-	  Py_DECREF (self);
-	  return NULL;
-	}
-
-      self->xmethods = PyList_New (0);
-      if (self->xmethods == NULL)
+      if (!objfpy_initialize (self))
 	{
 	  Py_DECREF (self);
 	  return NULL;
 	}
     }
+
   return (PyObject *) self;
 }
 
@@ -280,6 +284,7 @@  py_free_objfile (struct objfile *objfile, void *datum)
    representing OBJFILE.  If the object has already been created,
    return it.  Otherwise, create it.  Return NULL and set the Python
    error on failure.  */
+
 PyObject *
 objfile_to_objfile_object (struct objfile *objfile)
 {
@@ -291,36 +296,13 @@  objfile_to_objfile_object (struct objfile *objfile)
       object = PyObject_New (objfile_object, &objfile_object_type);
       if (object)
 	{
-	  object->objfile = objfile;
-
-	  object->printers = PyList_New (0);
-	  if (!object->printers)
-	    {
-	      Py_DECREF (object);
-	      return NULL;
-	    }
-
-	  object->frame_filters = PyDict_New ();
-	  if (!object->frame_filters)
-	    {
-	      Py_DECREF (object);
-	      return NULL;
-	    }
-
-	  object->type_printers = PyList_New (0);
-	  if (!object->type_printers)
-	    {
-	      Py_DECREF (object);
-	      return NULL;
-	    }
-
-	  object->xmethods = PyList_New (0);
-	  if (object->xmethods == NULL)
+	  if (!objfpy_initialize (object))
 	    {
 	      Py_DECREF (object);
 	      return NULL;
 	    }
 
+	  object->objfile = objfile;
 	  set_objfile_data (objfile, objfpy_objfile_data_key, object);
 	}
     }
diff --git a/gdb/python/py-progspace.c b/gdb/python/py-progspace.c
index b0092c5..4280032 100644
--- a/gdb/python/py-progspace.c
+++ b/gdb/python/py-progspace.c
@@ -82,6 +82,33 @@  pspy_dealloc (PyObject *self)
   Py_TYPE (self)->tp_free (self);
 }
 
+/* Initialize a pspace_object.
+   The result is a boolean indicating success.  */
+
+static int
+pspy_initialize (pspace_object *self)
+{
+  self->pspace = NULL;
+
+  self->printers = PyList_New (0);
+  if (self->printers == NULL)
+    return 0;
+
+  self->frame_filters = PyDict_New ();
+  if (self->frame_filters == NULL)
+    return 0;
+
+  self->type_printers = PyList_New (0);
+  if (self->type_printers == NULL)
+    return 0;
+
+  self->xmethods = PyList_New (0);
+  if (self->xmethods == NULL)
+    return 0;
+
+  return 1;
+}
+
 static PyObject *
 pspy_new (PyTypeObject *type, PyObject *args, PyObject *keywords)
 {
@@ -89,36 +116,13 @@  pspy_new (PyTypeObject *type, PyObject *args, PyObject *keywords)
 
   if (self)
     {
-      self->pspace = NULL;
-
-      self->printers = PyList_New (0);
-      if (!self->printers)
-	{
-	  Py_DECREF (self);
-	  return NULL;
-	}
-
-      self->frame_filters = PyDict_New ();
-      if (!self->frame_filters)
-	{
-	  Py_DECREF (self);
-	  return NULL;
-	}
-
-      self->type_printers = PyList_New (0);
-      if (!self->type_printers)
-	{
-	  Py_DECREF (self);
-	  return NULL;
-	}
-
-      self->xmethods = PyList_New (0);
-      if (self->xmethods == NULL)
+      if (!pspy_initialize (self))
 	{
 	  Py_DECREF (self);
 	  return NULL;
 	}
     }
+
   return (PyObject *) self;
 }
 
@@ -296,36 +300,13 @@  pspace_to_pspace_object (struct program_space *pspace)
       object = PyObject_New (pspace_object, &pspace_object_type);
       if (object)
 	{
-	  object->pspace = pspace;
-
-	  object->printers = PyList_New (0);
-	  if (!object->printers)
-	    {
-	      Py_DECREF (object);
-	      return NULL;
-	    }
-
-	  object->frame_filters = PyDict_New ();
-	  if (!object->frame_filters)
-	    {
-	      Py_DECREF (object);
-	      return NULL;
-	    }
-
-	  object->type_printers = PyList_New (0);
-	  if (!object->type_printers)
-	    {
-	      Py_DECREF (object);
-	      return NULL;
-	    }
-
-	  object->xmethods = PyList_New (0);
-	  if (object->xmethods == NULL)
+	  if (!pspy_initialize (object))
 	    {
 	      Py_DECREF (object);
 	      return NULL;
 	    }
 
+	  object->pspace = pspace;
 	  set_program_space_data (pspace, pspy_pspace_data_key, object);
 	}
     }