X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=score.c;h=0e18a1b994eb72025619efaecabe05d544f85765;hp=2707e6a71cef8ffb6fa36d007eac01191be414d3;hb=6087405d00ebd7f3a6d8f383ab99b786a99029c2;hpb=c184f843500dd59baa95fbbbab962a1691bf0217 diff --git a/score.c b/score.c index 2707e6a7..0e18a1b9 100644 --- a/score.c +++ b/score.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Andre Noll + * Copyright (C) 2007-2008 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -61,7 +61,7 @@ enum score_table_columns { static struct osl_column_description score_cols[] = { [SCORECOL_AFT_ROW] = { .storage_type = OSL_NO_STORAGE, - .storage_flags = OSL_RBTREE | OSL_FIXED_SIZE | OSL_UNIQUE, + .storage_flags = OSL_RBTREE | OSL_FIXED_SIZE | OSL_UNIQUE | OSL_DONT_FREE, .name = "aft_row", .compare_function = ptr_compare, .data_size = sizeof(void *) @@ -132,9 +132,8 @@ int score_add(const struct osl_row *aft_row, long score) assert(aft_row); size = score_table_desc.column_descriptions[SCORECOL_AFT_ROW].data_size; - score_objs[SCORECOL_AFT_ROW].data = para_malloc(size); + score_objs[SCORECOL_AFT_ROW].data = (struct osl_row *)aft_row; score_objs[SCORECOL_AFT_ROW].size = size; - *(const void **)(score_objs[SCORECOL_AFT_ROW].data) = aft_row; size = score_table_desc.column_descriptions[SCORECOL_SCORE].data_size; score_objs[SCORECOL_SCORE].data = para_malloc(size); @@ -144,8 +143,7 @@ int score_add(const struct osl_row *aft_row, long score) // PARA_DEBUG_LOG("adding %p\n", *(void **) (score_objs[SCORECOL_AFT_ROW].data)); ret = osl_add_row(score_table, score_objs); if (ret < 0) { - PARA_ERROR_LOG("%s\n", PARA_STRERROR(-ret)); - free(score_objs[SCORECOL_AFT_ROW].data); + PARA_ERROR_LOG("%s\n", para_strerror(-ret)); free(score_objs[SCORECOL_SCORE].data); } return ret; @@ -180,7 +178,8 @@ int score_update(const struct osl_row *aft_row, long percent) struct osl_row *row; long new_score; unsigned n, new_pos; - struct osl_object obj = {.data = &aft_row, .size = sizeof(void **)}; + struct osl_object obj = {.data = (struct osl_row *)aft_row, + .size = sizeof(aft_row)}; int ret = osl_get_row(score_table, SCORECOL_AFT_ROW, &obj, &row); if (ret < 0) @@ -221,14 +220,15 @@ int get_score_and_aft_row(struct osl_row *score_row, long *score, ret = osl_get_object(score_table, score_row, SCORECOL_AFT_ROW, &obj); if (ret < 0) return ret; - *aft_row = *(void **)obj.data; + *aft_row = obj.data; return 1; } static int get_score_row_from_aft_row(const struct osl_row *aft_row, struct osl_row **score_row) { - struct osl_object obj = {.data = &aft_row, .size = sizeof(void **)}; + struct osl_object obj = {.data = (struct osl_row *)aft_row, + .size = sizeof(aft_row)}; return osl_get_row(score_table, SCORECOL_AFT_ROW, &obj, score_row); } @@ -286,7 +286,7 @@ int score_get_best(struct osl_row **aft_row, long *score) ret = osl_get_object(score_table, row, SCORECOL_AFT_ROW, &obj); if (ret < 0) return ret; - *aft_row = *(void **)obj.data; + *aft_row = obj.data; return get_score_of_row(row, score); }