Fix EAN check digit calculation

Fix two mistakes in in the EAN check digit calculation.
This commit is contained in:
Colin Fletcher 2016-04-01 15:18:53 +01:00
parent 9a8a5f4f20
commit 91c7845d40
1 changed files with 6 additions and 3 deletions

View File

@ -270,15 +270,18 @@ EAN13MetadataField::update_status ()
// calculate EAN-13 modulo 10 check digit
int sum = 0;
const char *p = _value.c_str();
for (int i =0; i < 12; i++) {
for (int i = 0; i < 12; i++) {
char c = p[i] - '0';
if (i % 2) {
sum += c;
} else {
sum += c * 3;
} else {
sum += c;
}
}
sum %= 10;
if (sum)
sum = 10 - sum;
if (sum == p[12] - '0') {
status_label->set_markup (string_compose(
"<span color=\"green\">%1: %2</span>",