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