OSDN Git Service

fix condition for call "free".
authorornse01 <ornse01@users.sourceforge.jp>
Wed, 11 Apr 2012 13:10:17 +0000 (13:10 +0000)
committerornse01 <ornse01@users.sourceforge.jp>
Wed, 11 Apr 2012 13:10:17 +0000 (13:10 +0000)
git-svn-id: http://svn.sourceforge.jp/svnroot/bchan/bchanl/trunk@423 20a0b8eb-f62a-4a12-8fe1-b598822500fb

src/cache.c

index 6536b4b..b67dc3e 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * cache.c
  *
- * Copyright (c) 2009 project bchan
+ * Copyright (c) 2009-2012 project bchan
  *
  * This software is provided 'as-is', without any express or implied
  * warranty. In no event will the authors be held liable for any damages
@@ -49,12 +49,13 @@ LOCAL chunkedcache_data_t* chunkedcache_data_new(UB *data, W len)
        if (cache_data == NULL) {
                return NULL;
        }
+       QueInit(&cache_data->queue);
        cache_data->data = malloc(sizeof(UB)*len);
        if (cache_data->data == NULL) {
                free(cache_data);
                return NULL;
        }
-       memcpy(cache_data->data, data, len);
+       memcpy(cache_data->data, data, sizeof(UB)*len);
        cache_data->len = len;
 
        return cache_data;
@@ -103,7 +104,9 @@ EXPORT VOID chunkedcache_cleardata(chunkedcache_t *cache)
                cache_data = (chunkedcache_data_t*)cache->datalist.queue.next;
                chunkedcache_data_delete(cache_data);
        }
-       free(cache->datalist.data);
+       if (cache->datalist.data != NULL) {
+               free(cache->datalist.data);
+       }
 
        cache->datalist.data = NULL;
        cache->datalist.len = 0;