# HG changeset patch # User jbe # Date 1363530390 -3600 # Node ID 59598477298ce98e2d6973a31e9c4f972f55b8ad # Parent 90ac85d184f89f53d643bd8908e0e17f86ae54ca Fixed errors in function "process_initiative" of "lf_update_suggestion_order", which caused memory access errors diff -r 90ac85d184f8 -r 59598477298c lf_update_suggestion_order.c --- a/lf_update_suggestion_order.c Sun Mar 17 12:54:15 2013 +0100 +++ b/lf_update_suggestion_order.c Sun Mar 17 15:26:30 2013 +0100 @@ -222,7 +222,7 @@ static int process_initiative(PGconn *db, PGresult *res, char *escaped_initiative_id, int final) { int err; - int ballot_count = 0; + int ballot_count = 1; struct ballot *ballots; int i; { @@ -244,22 +244,18 @@ } } candidate_count = 0; - for (i=0; i<=tuple_count; i++) { + for (i=0; iweight = weight; ballot->sections[preference].count++; - if (old_member_id && strcmp(old_member_id, member_id)) ballot++; old_member_id = member_id; } for (i=0; isections[preference].candidates[candidates_in_sections[preference]++] = candidate_by_key(suggestion_id); + member_id = PQgetvalue(res, i, COL_MEMBER_ID); + suggestion_id = PQgetvalue(res, i, COL_SUGGESTION_ID); + preference = (int)strtol(PQgetvalue(res, i, COL_PREFERENCE), (char **)NULL, 10); + preference--; + if (old_member_id && strcmp(old_member_id, member_id)) { + ballot++; + candidates_in_sections[0] = 0; + candidates_in_sections[1] = 0; + candidates_in_sections[2] = 0; + candidates_in_sections[3] = 0; } - if (old_member_id && strcmp(old_member_id, member_id)) ballot++; + ballot->sections[preference].candidates[candidates_in_sections[preference]++] = candidate_by_key(suggestion_id); old_member_id = member_id; } }