@@ -1015,6 +1015,9 @@ subroutine json_info_by_path(json,p,path,found,var_type,n_children,name)
1015
1015
1016
1016
type (json_value),pointer :: p_var
1017
1017
logical (LK) :: ok
1018
+ #if defined __GFORTRAN__
1019
+ character (kind= CK,len= :),allocatable :: p_name
1020
+ #endif
1018
1021
1019
1022
call json% get(p,path,p_var,found)
1020
1023
@@ -1031,7 +1034,21 @@ subroutine json_info_by_path(json,p,path,found,var_type,n_children,name)
1031
1034
if (present (name)) name = ' '
1032
1035
else
1033
1036
! get info:
1037
+
1038
+ #if defined __GFORTRAN__
1039
+ call json% info(p_var,var_type,n_children)
1040
+ if (present (name)) then ! workaround for gfortran bug
1041
+ if (allocated (p_var% name)) then
1042
+ p_name = p_var% name
1043
+ name = p_name
1044
+ else
1045
+ name = ' '
1046
+ end if
1047
+ end if
1048
+ #else
1034
1049
call json% info(p_var,var_type,n_children,name)
1050
+ #endif
1051
+
1035
1052
end if
1036
1053
1037
1054
end subroutine json_info_by_path
@@ -1111,17 +1128,20 @@ subroutine json_matrix_info(json,p,is_matrix,var_type,n_sets,set_size,name)
1111
1128
integer :: i ! ! counter
1112
1129
integer :: j ! ! counter
1113
1130
#if defined __GFORTRAN__
1114
- character (kind= CK,len= :),allocatable :: p_name ! ! for getting the name
1131
+ character (kind= CK,len= :),allocatable :: p_name
1115
1132
#endif
1116
1133
1117
1134
! get info about the variable:
1118
1135
#if defined __GFORTRAN__
1119
- ! [note: passing name directory to this routine seems
1120
- ! to have a bug on gfortran 6.1.0, so we use a
1121
- ! temp variable]
1122
- call json% info(p,vartype,nr,p_name)
1123
- if (present (name)) name = p_name
1124
- if (allocated (p_name)) deallocate (p_name)
1136
+ call json% info(p,vartype,nr)
1137
+ if (present (name)) then ! workaround for gfortran bug
1138
+ if (allocated (p% name)) then
1139
+ p_name = p% name
1140
+ name = p_name
1141
+ else
1142
+ name = ' '
1143
+ end if
1144
+ end if
1125
1145
#else
1126
1146
call json% info(p,vartype,nr,name)
1127
1147
#endif
@@ -1228,6 +1248,9 @@ subroutine json_matrix_info_by_path(json,p,path,is_matrix,found,&
1228
1248
1229
1249
type (json_value),pointer :: p_var
1230
1250
logical (LK) :: ok
1251
+ #if defined __GFORTRAN__
1252
+ character (kind= CK,len= :),allocatable :: p_name
1253
+ #endif
1231
1254
1232
1255
call json% get(p,path,p_var,found)
1233
1256
@@ -1246,7 +1269,19 @@ subroutine json_matrix_info_by_path(json,p,path,is_matrix,found,&
1246
1269
else
1247
1270
1248
1271
! get info about the variable:
1272
+ #if defined __GFORTRAN__
1273
+ call json% matrix_info(p_var,is_matrix,var_type,n_sets,set_size)
1274
+ if (present (name)) then ! workaround for gfortran bug
1275
+ if (allocated (p_var% name)) then
1276
+ p_name = p_var% name
1277
+ name = p_name
1278
+ else
1279
+ name = ' '
1280
+ end if
1281
+ end if
1282
+ #else
1249
1283
call json% matrix_info(p_var,is_matrix,var_type,n_sets,set_size,name)
1284
+ #endif
1250
1285
if (json% failed() .and. present (found)) then
1251
1286
found = .false.
1252
1287
call json% clear_exceptions()
0 commit comments