Mercurial > octave-nkf
diff liboctave/data-conv.cc @ 3867:81552337b120
[project @ 2002-01-03 18:31:08 by jwe]
author | jwe |
---|---|
date | Thu, 03 Jan 2002 18:31:09 +0000 |
parents | 2dcc5f58ca0c |
children | 6cb22b9e3942 |
line wrap: on
line diff
--- a/liboctave/data-conv.cc Wed Dec 05 18:48:43 2001 +0000 +++ b/liboctave/data-conv.cc Thu Jan 03 18:31:09 2002 +0000 @@ -188,14 +188,17 @@ #define LS_DO_READ(TYPE, swap, data, size, len, stream) \ do \ { \ - volatile TYPE *ptr = X_CAST (volatile TYPE *, data); \ - stream.read (X_CAST (char *, ptr), size * len); \ - if (swap) \ - swap_ ## size ## _bytes (ptr, len); \ - TYPE tmp = ptr[0]; \ - for (int i = len - 1; i > 0; i--) \ - data[i] = ptr[i]; \ - data[0] = tmp; \ + if (len > 0) \ + { \ + volatile TYPE *ptr = X_CAST (volatile TYPE *, data); \ + stream.read (X_CAST (char *, ptr), size * len); \ + if (swap) \ + swap_ ## size ## _bytes (ptr, len); \ + TYPE tmp = ptr[0]; \ + for (int i = len - 1; i > 0; i--) \ + data[i] = ptr[i]; \ + data[0] = tmp; \ + } \ } \ while (0) @@ -205,13 +208,16 @@ #define LS_DO_WRITE(TYPE, data, size, len, stream) \ do \ { \ - char tmp_type = static_cast<char> (type); \ - stream.write (&tmp_type, 1); \ - TYPE *ptr = new TYPE [len]; \ - for (int i = 0; i < len; i++) \ - ptr[i] = X_CAST (TYPE, data[i]); \ - stream.write (X_CAST (char *, ptr), size * len); \ - delete [] ptr ; \ + if (len > 0) \ + { \ + char tmp_type = static_cast<char> (type); \ + stream.write (&tmp_type, 1); \ + TYPE *ptr = new TYPE [len]; \ + for (int i = 0; i < len; i++) \ + ptr[i] = X_CAST (TYPE, data[i]); \ + stream.write (X_CAST (char *, ptr), size * len); \ + delete [] ptr ; \ + } \ } \ while (0)