summaryrefslogtreecommitdiff
path: root/rtl.c
diff options
context:
space:
mode:
Diffstat (limited to 'rtl.c')
-rw-r--r--rtl.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/rtl.c b/rtl.c
index 3e96742..4b92992 100644
--- a/rtl.c
+++ b/rtl.c
@@ -378,7 +378,7 @@ rtems_rtl_find_obj (const char* name)
rtems_rtl_obj_t* found = NULL;
const char* aname = NULL;
const char* oname = NULL;
- int ooffset;
+ off_t ooffset;
if (!rtems_rtl_parse_name (name, &aname, &oname, &ooffset))
return NULL;
@@ -388,12 +388,23 @@ rtems_rtl_find_obj (const char* name)
while (!rtems_chain_is_tail (&rtl->objects, node))
{
rtems_rtl_obj_t* obj = (rtems_rtl_obj_t*) node;
- if (rtems_rtl_match_name (obj, name))
- return obj;
+ if ((aname == NULL && strcmp (obj->oname, oname) == 0) ||
+ (aname != NULL &&
+ strcmp (obj->aname, aname) == 0 && strcmp (obj->oname, oname) == 0))
+ {
+ found = obj;
+ break;
+ }
node = rtems_chain_next (node);
}
- return NULL;
+ if (!aname)
+ rtems_rtl_alloc_del(RTEMS_RTL_ALLOC_OBJECT, (void*) aname);
+
+ if (!oname)
+ rtems_rtl_alloc_del(RTEMS_RTL_ALLOC_OBJECT, (void*) oname);
+
+ return found;
}
rtems_rtl_obj_t*