[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [labplot] src/backend/datasources/filters: (HDF) fixed reading rank 1 strings
From:       Stefan Gerlach <null () kde ! org>
Date:       2017-01-06 23:10:58
Message-ID: E1cPdf0-0002mc-BO () code ! kde ! org
[Download RAW message or body]

Git commit 1ef57462dc533e146c4f8cadb9166bb0ab645743 by Stefan Gerlach.
Committed on 06/01/2017 at 23:10.
Pushed by sgerlach into branch 'master'.

(HDF) fixed reading rank 1 strings

M  +12   -12   src/backend/datasources/filters/HDFFilter.cpp

https://commits.kde.org/labplot/1ef57462dc533e146c4f8cadb9166bb0ab645743

diff --git a/src/backend/datasources/filters/HDFFilter.cpp \
b/src/backend/datasources/filters/HDFFilter.cpp index 018ccf5e..a2343def 100644
--- a/src/backend/datasources/filters/HDFFilter.cpp
+++ b/src/backend/datasources/filters/HDFFilter.cpp
@@ -1255,7 +1255,7 @@ QString HDFFilterPrivate::readCurrentDataSet(const QString & \
fileName, AbstractD  
 			switch (dclass) {
 			case H5T_STRING: {
-					char* data = (char *) malloc(typeSize * sizeof (char));
+					char* data = (char *) malloc(typeSize * sizeof(char));
 					hid_t memtype = H5Tcopy(H5T_C_S1);
 					handleError((int)memtype, "H5Tcopy");
 					status = H5Tset_size(memtype, typeSize);
@@ -1263,7 +1263,7 @@ QString HDFFilterPrivate::readCurrentDataSet(const QString & \
fileName, AbstractD  
 					status = H5Dread(dataset, memtype, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
 					handleError(status, "H5Tread");
-					dataString << data << QLatin1String("\n");
+					dataString << data;
 					free(data);
 					break;
 			}
@@ -1310,23 +1310,23 @@ QString HDFFilterPrivate::readCurrentDataSet(const QString & \
fileName, AbstractD  
 			switch (dclass) {
 			case H5T_STRING: {
-					char** data = (char **) malloc(rows * sizeof (char *));
-					data[0] = (char *) malloc(rows * typeSize * sizeof (char));
-					for (int i = 1; i < rows; i++)
-						data[i] = data[0] + i * typeSize;
+					char **data = (char **) malloc(rows * sizeof(char *));
 
 					hid_t memtype = H5Tcopy(H5T_C_S1);
 					handleError((int)memtype, "H5Tcopy");
-					status = H5Tset_size(memtype, typeSize);
+					//status = H5Tset_size(memtype, typeSize);
+					status = H5Tset_size(memtype, H5T_VARIABLE);
 					handleError((int)memtype, "H5Tset_size");
 
-					status = H5Dread(dataset, memtype, H5S_ALL, H5S_ALL, H5P_DEFAULT, data[0]);
-					handleError(status,"H5Dread");
+					status = H5Dread(dataset, memtype, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
+					handleError(status, "H5Dread");
 
-					for (int i = startRow-1; i < qMin(endRow, lines+startRow-1); i++)
-						dataString << data[i] << QLatin1String("\n");
+					for (int i = startRow-1; i < qMin(endRow, lines+startRow-1); i++) {
+						dataString << data[i];
+						if (i < qMin(endRow, lines+startRow-1)-1)
+							dataString << QLatin1String("\n");
+					}
 
-					free(data[0]);
 					free(data);
 					break;
 				}


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic