From 407f922a5b1036aacfb880a5366930a43ba9d109 Mon Sep 17 00:00:00 2001 From: "qiuyiuestc@gmail.com" Date: Sun, 18 Mar 2012 04:26:22 +0000 Subject: fix module unload issue git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2001 bbd45198-f89e-11dd-88c7-29a3b14d5316 --- src/module.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/module.c') diff --git a/src/module.c b/src/module.c index 390497d69d..8853919135 100644 --- a/src/module.c +++ b/src/module.c @@ -374,15 +374,15 @@ static struct rt_module* _load_shared_object(const char *name, void *module_ptr) if (module_size == 0) { rt_kprintf(" module size error\n"); - - return module; + return RT_NULL; } /* allocate module */ module = (struct rt_module *)rt_object_allocate(RT_Object_Class_Module, name); - if (!module) - return RT_NULL; + if (!module) return RT_NULL; + module->nref = 0; + /* allocate module space */ module->module_space = rt_malloc(module_size); if (module->module_space == RT_NULL) @@ -774,10 +774,10 @@ rt_module_t rt_module_load(const char *name, void *module_ptr) if (elf_module->e_entry != 0) { +#ifdef RT_USING_SLAB /* init module memory allocator */ module->mem_list = RT_NULL; -#ifdef RT_USING_SLAB /* create page array */ module->page_array = (void *)rt_malloc(PAGE_COUNT_MAX * sizeof(struct rt_page_info)); module->page_cnt = 0; @@ -1527,7 +1527,6 @@ void *rt_module_realloc(void *ptr, rt_size_t size) } } } -#endif #ifdef RT_USING_FINSH #include @@ -1569,3 +1568,5 @@ FINSH_FUNCTION_EXPORT(list_mempage, list module using memory page information) #endif #endif + +#endif -- cgit v1.3.1