diff --git a/backend/aztec.c b/backend/aztec.c index d4c2fc47..69897654 100644 --- a/backend/aztec.c +++ b/backend/aztec.c @@ -571,22 +571,20 @@ static int az_count_byte_only(const unsigned char source[], const int length, co static int az_punct_size(const unsigned char source[], const int len, const int gs1) { int i; int cnt_doubles = 0; - int cnt_fnc1s = 0; - int size; if (gs1) { - for (i = 0; i < len; i++) { - cnt_doubles += AZ_DOUBLE_PUNCT(source, len, i); - cnt_fnc1s += (source[i] == '\x1D'); - } - } else { - for (i = 0; i < len; i++) { - cnt_doubles += AZ_DOUBLE_PUNCT(source, len, i); + int cnt_fnc1s = 0; + for (i = 0; i + 1 < len; i++) { + cnt_doubles += AZ_DOUBLE_PUNCT_NO_LEN_CHECK(source, i); + cnt_fnc1s += source[i] == '\x1D'; } + cnt_fnc1s += source[i] == '\x1D'; + return 5 * (len - cnt_doubles - cnt_fnc1s) + (cnt_fnc1s << 3); } - size = 5 * (len - cnt_doubles - cnt_fnc1s) + 8 * cnt_fnc1s; - - return size; + for (i = 0; i + 1 < len; i++) { + cnt_doubles += AZ_DOUBLE_PUNCT_NO_LEN_CHECK(source, i); + } + return 5 * (len - cnt_doubles); } struct az_edge { @@ -700,7 +698,7 @@ static void az_new_Edge(const struct az_edge *edges, const char mode, const unsi } edge->bytes = len + previous->bytes; } - edge->size += 8 * len; + edge->size += len << 3; edge->startMode = previousStartMode; break; } @@ -709,7 +707,7 @@ static void az_new_Edge(const struct az_edge *edges, const char mode, const unsi /* Add an edge for a mode at a vertex if no existing edge or if more optimal than existing edge */ static void az_addEdge(const unsigned char *source, const int length, struct az_edge *edges, const char mode, - const int from, const int len, const int gs1, const int initial_mode, struct az_edge *previous) { + const int from, const int len, const int gs1, const int initial_mode, const struct az_edge *previous) { struct az_edge edge; const int vertexIndex = from + len; const int v_ij = vertexIndex * AZ_NUM_MODES + AZ_MASK(mode) - 1; @@ -726,7 +724,7 @@ static void az_addEdge(const unsigned char *source, const int length, struct az_ /* Add edges for the various modes at a vertex */ static void az_addEdges(const unsigned char source[], const int length, const int gs1, const int initial_mode, - struct az_edge *edges, const int from, struct az_edge *previous) { + struct az_edge *edges, const int from, const struct az_edge *previous) { const unsigned char ch = source[from]; int len; @@ -962,7 +960,7 @@ static int az_text_size(const char *modes, const unsigned char *source, int leng if (count > 2047) { /* Max 11-bit number */ big_batch = count > 2078 ? 2078 : count; /* Put 00000 followed by 11-bit number of bytes less 31 */ - size += 16 + 8 * big_batch; + size += 16 + (big_batch << 3); i += big_batch; count -= big_batch; } @@ -978,7 +976,7 @@ static int az_text_size(const char *modes, const unsigned char *source, int leng /* Put 5-bit number of bytes */ size += 5; } - size += 8 * count; + size += count << 3; i += count; } i--;