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)