@@ -976,7 +976,7 @@ function readMapElement(buf) {
976976/** @summary create member entry for streamer element
977977 * @desc used for reading of data
978978 * @private */
979- function createMemberStreamer ( element , file ) {
979+ function createMemberStreamer ( element , file , no_string ) {
980980 const member = {
981981 name : element . fName , type : element . fType ,
982982 fArrayLength : element . fArrayLength ,
@@ -1042,6 +1042,7 @@ function createMemberStreamer(element, file) {
10421042 case kOffsetL + kInt :
10431043 case kOffsetL + kCounter :
10441044 case kOffsetL + kDouble :
1045+ case kOffsetL + kChar :
10451046 case kOffsetL + kUChar :
10461047 case kOffsetL + kShort :
10471048 case kOffsetL + kUShort :
@@ -1054,31 +1055,29 @@ function createMemberStreamer(element, file) {
10541055 case kOffsetL + kFloat :
10551056 if ( element . fArrayDim < 2 ) {
10561057 member . arrlength = element . fArrayLength ;
1057- member . func = function ( buf , obj ) {
1058- obj [ this . name ] = buf . readFastArray ( this . arrlength , this . type - kOffsetL ) ;
1059- } ;
1058+ if ( ( member . type !== kOffsetL + kChar ) || no_string ) {
1059+ member . func = function ( buf , obj ) {
1060+ obj [ this . name ] = buf . readFastArray ( this . arrlength , this . type - kOffsetL ) ;
1061+ } ;
1062+ } else {
1063+ member . func = function ( buf , obj ) {
1064+ obj [ this . name ] = buf . readFastString ( this . arrlength ) ;
1065+ } ;
1066+ }
10601067 } else {
1061- member . arrlength = element . fMaxIndex [ element . fArrayDim - 1 ] ;
10621068 member . minus1 = true ;
1063- member . func = function ( buf , obj ) {
1064- obj [ this . name ] = buf . readNdimArray ( this , ( buf2 , handle ) =>
1065- buf2 . readFastArray ( handle . arrlength , handle . type - kOffsetL ) ) ;
1066- } ;
1067- }
1068- break ;
1069- case kOffsetL + kChar :
1070- if ( element . fArrayDim < 2 ) {
1071- member . arrlength = element . fArrayLength ;
1072- member . func = function ( buf , obj ) {
1073- obj [ this . name ] = buf . readFastString ( this . arrlength ) ;
1074- } ;
1075- } else {
1076- member . minus1 = true ; // one dimension used for char*
10771069 member . arrlength = element . fMaxIndex [ element . fArrayDim - 1 ] ;
1078- member . func = function ( buf , obj ) {
1079- obj [ this . name ] = buf . readNdimArray ( this , ( buf2 , handle ) =>
1080- buf2 . readFastString ( handle . arrlength ) ) ;
1081- } ;
1070+ if ( ( member . type !== kOffsetL + kChar ) || no_string ) {
1071+ member . func = function ( buf , obj ) {
1072+ obj [ this . name ] = buf . readNdimArray ( this , ( buf2 , handle ) =>
1073+ buf2 . readFastArray ( handle . arrlength , handle . type - kOffsetL ) ) ;
1074+ } ;
1075+ } else {
1076+ member . func = function ( buf , obj ) {
1077+ obj [ this . name ] = buf . readNdimArray ( this , ( buf2 , handle ) =>
1078+ buf2 . readFastString ( handle . arrlength ) ) ;
1079+ } ;
1080+ }
10821081 }
10831082 break ;
10841083 case kOffsetP + kBool :
0 commit comments