From c4d18d02e718ee1573e98338756d2b35e7b31f1d Mon Sep 17 00:00:00 2001 From: Leonardo Brondani Schenkel Date: Mon, 19 Oct 2020 11:20:35 +0200 Subject: [PATCH] Detect Sigma 18-35mm f/1.8 DC HSM (firmware 2.x) On Canon bodies and lens firmware 1.x, this lens identifies itself using model number 150. Starting with firmware 2.x, this lens now identifies itself using model number 368. Exiv2 was correctly identifying the former but not the latter. This commit also fixes a pre-existing bug in which exiv2 was not correctly disambiguating lenses using model number 368. --- src/canonmn_int.cpp | 2 ++ ...on_Sigma_18_35_F18_DC_HSM_firmware_1xx.exv | Bin 0 -> 23151 bytes ...on_Sigma_18_35_F18_DC_HSM_firmware_2xx.exv | Bin 0 -> 23123 bytes tests/bugfixes/github/test_issue_1368.py | 19 ++++++++++++++++++ 4 files changed, 21 insertions(+) create mode 100755 test/data/Canon_Sigma_18_35_F18_DC_HSM_firmware_1xx.exv create mode 100755 test/data/Canon_Sigma_18_35_F18_DC_HSM_firmware_2xx.exv create mode 100644 tests/bugfixes/github/test_issue_1368.py diff --git a/src/canonmn_int.cpp b/src/canonmn_int.cpp index b3443819..e00364fb 100644 --- a/src/canonmn_int.cpp +++ b/src/canonmn_int.cpp @@ -1147,6 +1147,7 @@ namespace Exiv2 { { 368, "Sigma 105mm f/1.4 DG HSM" }, // 8 { 368, "Sigma 14-24mm f/2.8 DG HSM" }, // 9 { 368, "Sigma 70mm f/2.8 DG Macro" }, // 10 + { 368, "Sigma 18-35mm f/1.8 DC HSM | A" }, // 11 { 488, "Canon EF-S 15-85mm f/3.5-5.6 IS USM" }, { 489, "Canon EF 70-300mm f/4-5.6L IS USM" }, { 490, "Canon EF 8-15mm f/4L Fisheye USM" }, @@ -1281,6 +1282,7 @@ namespace Exiv2 { { 250, printCsLensByFocalLength }, // not tested { 254, printCsLensByFocalLength }, { 255, printCsLensByFocalLength }, // not tested + { 368, printCsLensByFocalLength }, { 491, printCsLensByFocalLength }, { 493, printCsLensByFocalLength }, // not tested { 624, printCsLensByFocalLengthTC }, diff --git a/test/data/Canon_Sigma_18_35_F18_DC_HSM_firmware_1xx.exv b/test/data/Canon_Sigma_18_35_F18_DC_HSM_firmware_1xx.exv new file mode 100755 index 0000000000000000000000000000000000000000..f890c033893db2e9b87f58c302821d804a8001f8 GIT binary patch literal 23151 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 L$ph?!cE0?7sgD3> literal 0 HcmV?d00001 diff --git a/test/data/Canon_Sigma_18_35_F18_DC_HSM_firmware_2xx.exv b/test/data/Canon_Sigma_18_35_F18_DC_HSM_firmware_2xx.exv new file mode 100755 index 0000000000000000000000000000000000000000..e79b13f493b36ec22ebb8a2e487511216c8e8b26 GIT binary patch literal 23123 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

tBO1L%Ua@s z;)22gdw+qE4ao4ay(Fu9O6@=b$SJTLsOszME9fgG=