From 4454f70bc3c9cac2cf68787288ec740431ec1df5 Mon Sep 17 00:00:00 2001 From: Ilya Volkovets Date: Sun, 19 Jul 2026 01:46:27 +0200 Subject: [PATCH 1/3] Bind column descriptors by dataset ID --- OriginAnyParser.cpp | 7 ++++++- OriginParser.cpp | 10 ++++++++++ OriginParser.h | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/OriginAnyParser.cpp b/OriginAnyParser.cpp index 7def1f6..3bab475 100644 --- a/OriginAnyParser.cpp +++ b/OriginAnyParser.cpp @@ -2176,7 +2176,12 @@ void OriginAnyParser::getCurveProperties(const string &cvehd, unsigned int cvehd stmp.str(cvehd.substr(0x4A)); GET_SHORT(stmp, width) } - int col_index = findColumnByName((int)ispread, name); + unsigned short dataID = 0; + stmp.str(cvehd.substr(0x04)); + GET_SHORT(stmp, dataID) + int col_index = dataID > 0 ? findColumnByDatasetIndex((int)ispread, dataID - 1) : -1; + if (col_index == -1) + col_index = findColumnByName((int)ispread, name); if (col_index != -1) { spreadSheets[ispread].columns[col_index].name = name; diff --git a/OriginParser.cpp b/OriginParser.cpp index b0171ba..ca97a47 100644 --- a/OriginParser.cpp +++ b/OriginParser.cpp @@ -230,3 +230,13 @@ int OriginParser::findColumnByName(int spread, const string &name) } return -1; } + +int OriginParser::findColumnByDatasetIndex(int spread, unsigned int datasetIndex) const +{ + const size_t columnsCount = spreadSheets[spread].columns.size(); + for (unsigned int i = 0; i < columnsCount; i++) { + if (spreadSheets[spread].columns[i].index == datasetIndex) + return i; + } + return -1; +} diff --git a/OriginParser.h b/OriginParser.h index d49508a..03bedeb 100644 --- a/OriginParser.h +++ b/OriginParser.h @@ -51,6 +51,7 @@ class ORIGIN_EXPORT OriginParser void convertSpreadToExcel(std::vector::size_type spread); int findColumnByName(int spread, const std::string &name); + int findColumnByDatasetIndex(int spread, unsigned int datasetIndex) const; private: bool iequals(const std::string &, const std::string &, From f4831085edc1fe84160d6315161d9a5657f6df0c Mon Sep 17 00:00:00 2001 From: Ilya Volkovets Date: Sun, 19 Jul 2026 02:22:49 +0200 Subject: [PATCH 2/3] Update test outputs for version 3.0.4 --- tests/examples/2folder-with-graphs.opj.out.orig | 2 +- tests/examples/crash.opj.out.orig | 2 +- tests/examples/data+graph-7.0.opj.out.orig | 2 +- tests/examples/reciprocal-scale-x.opj.out.orig | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/examples/2folder-with-graphs.opj.out.orig b/tests/examples/2folder-with-graphs.opj.out.orig index 3839a8a..261c43f 100644 --- a/tests/examples/2folder-with-graphs.opj.out.orig +++ b/tests/examples/2folder-with-graphs.opj.out.orig @@ -1,4 +1,4 @@ -opj2dat 3.0.3, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga +opj2dat 3.0.4, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga Project has 4 windows. Origin project Tree 2folder-with-graphs 2022-01-15 17:31:39 diff --git a/tests/examples/crash.opj.out.orig b/tests/examples/crash.opj.out.orig index 1e205db..70daddb 100644 --- a/tests/examples/crash.opj.out.orig +++ b/tests/examples/crash.opj.out.orig @@ -1,4 +1,4 @@ -opj2dat 3.0.3, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga +opj2dat 3.0.4, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga Project has 1 windows. Origin project Tree bar 2013-01-31 10:11:35 diff --git a/tests/examples/data+graph-7.0.opj.out.orig b/tests/examples/data+graph-7.0.opj.out.orig index 6943226..80530ab 100644 --- a/tests/examples/data+graph-7.0.opj.out.orig +++ b/tests/examples/data+graph-7.0.opj.out.orig @@ -1,4 +1,4 @@ -opj2dat 3.0.3, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga +opj2dat 3.0.4, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga Project has 2 windows. Origin project Tree data+graph-7.0 2006-04-29 17:26:12 diff --git a/tests/examples/reciprocal-scale-x.opj.out.orig b/tests/examples/reciprocal-scale-x.opj.out.orig index 331e57e..d92117a 100644 --- a/tests/examples/reciprocal-scale-x.opj.out.orig +++ b/tests/examples/reciprocal-scale-x.opj.out.orig @@ -1,4 +1,4 @@ -opj2dat 3.0.3, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga +opj2dat 3.0.4, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga Project has 2 windows. Origin project Tree reciprocal-scale-x 2024-11-07 21:34:57 From da657fe6910ae7de59c880362f4e1681e2e64abf Mon Sep 17 00:00:00 2001 From: Ilya Volkovets Date: Sun, 19 Jul 2026 02:50:49 +0200 Subject: [PATCH 3/3] Add column dataset ID regression test --- tests/examples/column-dataid-collision.opj | Bin 0 -> 3480 bytes .../column-dataid-collision.opj.1.dat.orig | 4 ++++ .../column-dataid-collision.opj.out.orig | 22 ++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 tests/examples/column-dataid-collision.opj create mode 100644 tests/examples/column-dataid-collision.opj.1.dat.orig create mode 100644 tests/examples/column-dataid-collision.opj.out.orig diff --git a/tests/examples/column-dataid-collision.opj b/tests/examples/column-dataid-collision.opj new file mode 100644 index 0000000000000000000000000000000000000000..84743834a73f87ddb26bac38ab927c53b26d6b91 GIT binary patch literal 3480 zcmeHJ-Ahza5TCp2$9B?kb(0<>t{;I97V7G1Lhfqmx@F}@V3KxQz1Lb;UD;h9N`r-n z{(xShr=X_@>ZJ#vAg~9cw?GIiq6nf0O6V=5ZRVVN+`C_DU@y@uduGne@64H*JLlYc zY+$rYZ8_|Aw|ms4Hg&|)qSmr`0AK*k`0FotYQq_f(mX-1E^`I`3EP! zn+X7KIY1x^uO0N5f8N<-?gqFzB?M6{=I^Zv-A#qO@LJJsnzL(A|PdxQn)VsJ5y4veP&X>Ij1 zd)(vK#u~+sYJ$b!!MgnKf^0Orr zxkgbI2QoT6;sgntsE(bggIhsbD6%x$4~6^SDRS?2z+V4c`Q7ZOa$Drc13SK4Hlt#T zQ51_5tQfnEQ9~#|H@q0YZn?;Tjw4d_px|N@nX6XSPRd)IzMb6b-}NPLLdmztlo2ax)GayN&{Va?475KUwSBWVk$BWNi?m{0X%v8Ys~uDB%(8)-6ZhGdBjxVN=eh6pb zP%IRg0Y>j|R!4*1>2#+1lYUd2;r9u!Q=1?ek6ffeSbVvrY9|8X2=XbW0)c7LOM(IA zi^)R!T^GNs=x_>>x&+xtOn@%H~{ApKk?4N?Bx*NQh#jmzbJq#yK13 Kwab?R0)7MO82_;V literal 0 HcmV?d00001 diff --git a/tests/examples/column-dataid-collision.opj.1.dat.orig b/tests/examples/column-dataid-collision.opj.1.dat.orig new file mode 100644 index 0000000..ec6e6d8 --- /dev/null +++ b/tests/examples/column-dataid-collision.opj.1.dat.orig @@ -0,0 +1,4 @@ +ABCDEFGHIJK; ABCDEFGHIJK; +1; 2; +2; 4; +3; 5; diff --git a/tests/examples/column-dataid-collision.opj.out.orig b/tests/examples/column-dataid-collision.opj.out.orig new file mode 100644 index 0000000..54a2d4f --- /dev/null +++ b/tests/examples/column-dataid-collision.opj.out.orig @@ -0,0 +1,22 @@ +opj2dat 3.0.4, Copyright (C) 2008-2024 Stefan Gerlach, 2017 Miquel Garriga +Project has 1 windows. +Origin project Tree +column-dataid-collision 2006-04-29 17:26:12 +Parsing status = 1 +OPJ PROJECT "examples/column-dataid-collision.opj" VERSION = 9.75 +number of datasets = 2 +number of spreadsheets = 1 +number of matrices = 0 +number of excels = 0 +number of functions = 0 +number of graphs = 0 +number of notes = 0 +Spreadsheet 1 + Name: Data1 + Label: + Columns: 2 + Column 1 : ABCDEFGHIJK / type : 0, rows : 3 + Column 2 : ABCDEFGHIJK / type : 1, rows : 3 +saved to examples/column-dataid-collision.opj.1.dat +ABCDEFGHIJKABCDEFGHIJK + Data: