Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
mpim-sw
libcdi
Commits
e220cdee
Commit
e220cdee
authored
Apr 27, 2016
by
Uwe Schulzweida
Browse files
cdfReadVarSlice: fix bug with DATATYPE_UINT8
parent
3c8d9f83
Changes
2
Hide whitespace changes
Inline
Side-by-side
ChangeLog
View file @
e220cdee
...
...
@@ -2,6 +2,10 @@
* Version 1.7.2 released
2016-04-27 Uwe Schulzweida
* cdfReadVarSlice: fix bug with DATATYPE_UINT8
2016-04-04 Uwe Schulzweida
* GRIB1/GRIB_API (accumulation) encoding error [Bug #6638]
...
...
src/cdf_read.c
View file @
e220cdee
...
...
@@ -578,15 +578,13 @@ void cdf_read_var(stream_t *streamptr, int varID, int memtype, void *data, int *
static
void
cdfReadVarSliceDP
(
stream_t
*
streamptr
,
int
varID
,
int
levelID
,
double
*
data
,
int
*
nmiss
)
{
size_t
start
[
4
];
size_t
count
[
4
];
if
(
CDI_Debug
)
Message
(
"streamID = %d varID = %d levelID = %d"
,
streamptr
->
self
,
varID
,
levelID
);
int
vlistID
=
streamptr
->
vlistID
;
int
fileID
=
streamptr
->
fileID
;
size_t
start
[
4
],
count
[
4
];
bool
swapxy
;
cdfGetSliceSlapDescription
(
streamptr
,
varID
,
levelID
,
&
swapxy
,
&
start
,
&
count
);
...
...
@@ -604,19 +602,20 @@ void cdfReadVarSliceDP(stream_t *streamptr, int varID, int levelID, double *data
data
[
i
]
=
(
double
)
data_fp
[
i
];
Free
(
data_fp
);
}
else
if
(
vlistInqVarDatatype
(
vlistID
,
varID
)
==
DATATYPE_UINT8
)
{
nc_type
xtype
;
cdf_inq_vartype
(
fileID
,
ncvarid
,
&
xtype
);
if
(
xtype
==
NC_BYTE
)
{
for
(
size_t
i
=
0
;
i
<
gridsize
;
i
++
)
if
(
data
[
i
]
<
0
)
data
[
i
]
+=
256
;
}
}
else
{
cdf_get_vara_double
(
fileID
,
ncvarid
,
start
,
count
,
data
);
if
(
vlistInqVarDatatype
(
vlistID
,
varID
)
==
DATATYPE_UINT8
)
{
nc_type
xtype
;
cdf_inq_vartype
(
fileID
,
ncvarid
,
&
xtype
);
if
(
xtype
==
NC_BYTE
)
{
for
(
size_t
i
=
0
;
i
<
gridsize
;
i
++
)
if
(
data
[
i
]
<
0
)
data
[
i
]
+=
256
;
}
}
}
if
(
swapxy
)
transpose2dArrayDP
(
ysize
,
xsize
,
data
);
...
...
@@ -636,15 +635,13 @@ void cdfReadVarSliceDP(stream_t *streamptr, int varID, int levelID, double *data
static
void
cdfReadVarSliceSP
(
stream_t
*
streamptr
,
int
varID
,
int
levelID
,
float
*
data
,
int
*
nmiss
)
{
size_t
start
[
4
];
size_t
count
[
4
];
if
(
CDI_Debug
)
Message
(
"streamID = %d varID = %d levelID = %d"
,
streamptr
->
self
,
varID
,
levelID
);
int
vlistID
=
streamptr
->
vlistID
;
int
fileID
=
streamptr
->
fileID
;
size_t
start
[
4
],
count
[
4
];
bool
swapxy
;
cdfGetSliceSlapDescription
(
streamptr
,
varID
,
levelID
,
&
swapxy
,
&
start
,
&
count
);
...
...
@@ -662,19 +659,20 @@ void cdfReadVarSliceSP(stream_t *streamptr, int varID, int levelID, float *data,
data
[
i
]
=
(
float
)
data_dp
[
i
];
Free
(
data_dp
);
}
else
if
(
vlistInqVarDatatype
(
vlistID
,
varID
)
==
DATATYPE_UINT8
)
{
nc_type
xtype
;
cdf_inq_vartype
(
fileID
,
ncvarid
,
&
xtype
);
if
(
xtype
==
NC_BYTE
)
{
for
(
size_t
i
=
0
;
i
<
gridsize
;
i
++
)
if
(
data
[
i
]
<
0
)
data
[
i
]
+=
256
;
}
}
else
{
cdf_get_vara_float
(
fileID
,
ncvarid
,
start
,
count
,
data
);
if
(
vlistInqVarDatatype
(
vlistID
,
varID
)
==
DATATYPE_UINT8
)
{
nc_type
xtype
;
cdf_inq_vartype
(
fileID
,
ncvarid
,
&
xtype
);
if
(
xtype
==
NC_BYTE
)
{
for
(
size_t
i
=
0
;
i
<
gridsize
;
i
++
)
if
(
data
[
i
]
<
0
)
data
[
i
]
+=
256
;
}
}
}
if
(
swapxy
)
transpose2dArraySP
(
ysize
,
xsize
,
data
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment