From 37f026a32de21a7132656d40cbde10deb721d01d Mon Sep 17 00:00:00 2001
From: Martin Nilsson <nilsson@opera.com>
Date: Wed, 12 Mar 2014 18:18:40 +0100
Subject: [PATCH] Inline find_object_type() to fix const warning.

---
 src/pike_types.c | 26 --------------------------
 src/pike_types.h |  1 -
 src/program.c    | 27 ++++++++++++++++++++++++++-
 3 files changed, 26 insertions(+), 28 deletions(-)

diff --git a/src/pike_types.c b/src/pike_types.c
index 5330f68c0e..aa8d5f5f1d 100644
--- a/src/pike_types.c
+++ b/src/pike_types.c
@@ -8802,32 +8802,6 @@ void cleanup_pike_type_table(void)
 #endif /* DO_PIKE_CLEANUP */
 }
 
-PMOD_EXPORT struct pike_type *find_object_type(struct pike_type *t)
-{
-  struct pike_type *res;
-
-  if (!t) return NULL;
-
-  switch(t->type) {
-  case T_OBJECT:
-    if (t->cdr) return t;
-    break;
-  case T_TUPLE:
-  case T_OR:
-  case T_AND:
-  case PIKE_T_RING:
-    res = find_object_type(t->car);
-    if (res) return res;
-    /* FALL_THROUGH */
-  case T_SCOPE:
-  case T_ASSIGN:
-  case PIKE_T_ATTRIBUTE:
-  case PIKE_T_NAME:
-    return find_object_type(t->cdr);
-  }
-  return NULL;
-}
-
 PMOD_EXPORT void *find_type(struct pike_type *t,
 			    void *(*cb)(struct pike_type *))
 {
diff --git a/src/pike_types.h b/src/pike_types.h
index d912d9a93b..0f029d7071 100644
--- a/src/pike_types.h
+++ b/src/pike_types.h
@@ -298,7 +298,6 @@ struct pike_type *object_type_to_program_type(struct pike_type *obj_t);
 PMOD_EXPORT char *get_name_of_type(TYPE_T t);
 void cleanup_pike_types(void);
 void cleanup_pike_type_table(void);
-PMOD_EXPORT struct pike_type *find_object_type(struct pike_type *t);
 PMOD_EXPORT void *find_type(struct pike_type *t,
 			    void *(*cb)(struct pike_type *));
 PMOD_EXPORT void visit_type (struct pike_type *t, int action);
diff --git a/src/program.c b/src/program.c
index bfe4d78ded..b06860527a 100644
--- a/src/program.c
+++ b/src/program.c
@@ -11484,7 +11484,32 @@ PMOD_EXPORT struct program *program_from_function(const struct svalue *f)
 
 PMOD_EXPORT struct program *program_from_type(const struct pike_type *t)
 {
-  t = find_object_type(t);
+  if (!t) return NULL;
+
+  switch(t->type) {
+  case T_OBJECT:
+    if (t->cdr) break;
+    return NULL;
+  case T_TUPLE:
+  case T_OR:
+  case T_AND:
+  case PIKE_T_RING:
+    {
+      struct program *res;
+      res = program_from_type(t->car);
+      if (res) return res;
+    }
+    /* FALL_THROUGH */
+  case T_SCOPE:
+  case T_ASSIGN:
+  case PIKE_T_ATTRIBUTE:
+  case PIKE_T_NAME:
+    return program_from_type(t->cdr);
+    break;
+  default:
+    return NULL;
+  }
+
   if (!t) return NULL;
   return id_to_program((int)(ptrdiff_t)t->cdr);
 }
-- 
GitLab