summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/src/exec/include/rtems/libio_.h5
-rw-r--r--c/src/exec/libcsupport/include/rtems/libio_.h5
-rw-r--r--c/src/exec/libcsupport/src/libio.c18
-rw-r--r--c/src/lib/ChangeLog7
-rw-r--r--c/src/lib/include/rtems/libio_.h5
-rw-r--r--c/src/lib/libc/libio.c18
-rw-r--r--cpukit/include/rtems/libio_.h5
-rw-r--r--cpukit/libcsupport/include/rtems/libio_.h5
-rw-r--r--cpukit/libcsupport/src/libio.c18
9 files changed, 64 insertions, 22 deletions
diff --git a/c/src/exec/include/rtems/libio_.h b/c/src/exec/include/rtems/libio_.h
index 7e0f6df71e..6a4943be75 100644
--- a/c/src/exec/include/rtems/libio_.h
+++ b/c/src/exec/include/rtems/libio_.h
@@ -165,8 +165,9 @@ extern rtems_libio_t *rtems_libio_iop_freelist;
#define rtems_filesystem_freenode( _node ) \
do { \
- if ( (_node)->ops->freenod_h ) \
- (*(_node)->ops->freenod_h)( (_node) ); \
+ if ( (_node)->ops )\
+ if ( (_node)->ops->freenod_h ) \
+ (*(_node)->ops->freenod_h)( (_node) ); \
} while (0)
/*
diff --git a/c/src/exec/libcsupport/include/rtems/libio_.h b/c/src/exec/libcsupport/include/rtems/libio_.h
index 7e0f6df71e..6a4943be75 100644
--- a/c/src/exec/libcsupport/include/rtems/libio_.h
+++ b/c/src/exec/libcsupport/include/rtems/libio_.h
@@ -165,8 +165,9 @@ extern rtems_libio_t *rtems_libio_iop_freelist;
#define rtems_filesystem_freenode( _node ) \
do { \
- if ( (_node)->ops->freenod_h ) \
- (*(_node)->ops->freenod_h)( (_node) ); \
+ if ( (_node)->ops )\
+ if ( (_node)->ops->freenod_h ) \
+ (*(_node)->ops->freenod_h)( (_node) ); \
} while (0)
/*
diff --git a/c/src/exec/libcsupport/src/libio.c b/c/src/exec/libcsupport/src/libio.c
index 1216ec15a5..f5cd36dbd9 100644
--- a/c/src/exec/libcsupport/src/libio.c
+++ b/c/src/exec/libcsupport/src/libio.c
@@ -206,10 +206,20 @@ rtems_libio_t *rtems_libio_allocate( void )
if (rc != RTEMS_SUCCESSFUL)
goto failed;
rtems_libio_iop_freelist = iop->data1;
- iop->data1 = 0;
- iop->flags = LIBIO_FLAGS_OPEN;
- iop->size = 0;
- iop->offset = 0;
+
+ iop->driver = NULL;
+ iop->size = 0;
+ iop->offset = 0;
+ iop->flags = LIBIO_FLAGS_OPEN;
+ iop->pathinfo.node_access = NULL;
+ iop->pathinfo.handlers = NULL;
+ iop->pathinfo.ops = NULL;
+ iop->pathinfo.mt_entry = NULL;
+ iop->data0 = 0;
+ iop->data1 = NULL;
+ iop->file_info = NULL;
+ iop->handlers = NULL;
+
goto done;
}
diff --git a/c/src/lib/ChangeLog b/c/src/lib/ChangeLog
index 73d7179e02..57d5ae4f85 100644
--- a/c/src/lib/ChangeLog
+++ b/c/src/lib/ChangeLog
@@ -1,3 +1,10 @@
+2001-10-25 Jennifer Averett <jennifer@OARcorp.com>
+
+ * libc/libio.c: Initialize more fields to NULL/0 during initialiation.
+ * include/rtems/libio_.h: Fix freenode macro so it works for sockets
+ which do not have the full set of filesystem operations and are
+ initialized via something other than open().
+
2001-10-18 Till Straumann <strauman@SLAC.Stanford.EDU>
* libc/open.c, libc/close.c: Moved freenode from open to
diff --git a/c/src/lib/include/rtems/libio_.h b/c/src/lib/include/rtems/libio_.h
index 7e0f6df71e..6a4943be75 100644
--- a/c/src/lib/include/rtems/libio_.h
+++ b/c/src/lib/include/rtems/libio_.h
@@ -165,8 +165,9 @@ extern rtems_libio_t *rtems_libio_iop_freelist;
#define rtems_filesystem_freenode( _node ) \
do { \
- if ( (_node)->ops->freenod_h ) \
- (*(_node)->ops->freenod_h)( (_node) ); \
+ if ( (_node)->ops )\
+ if ( (_node)->ops->freenod_h ) \
+ (*(_node)->ops->freenod_h)( (_node) ); \
} while (0)
/*
diff --git a/c/src/lib/libc/libio.c b/c/src/lib/libc/libio.c
index 1216ec15a5..f5cd36dbd9 100644
--- a/c/src/lib/libc/libio.c
+++ b/c/src/lib/libc/libio.c
@@ -206,10 +206,20 @@ rtems_libio_t *rtems_libio_allocate( void )
if (rc != RTEMS_SUCCESSFUL)
goto failed;
rtems_libio_iop_freelist = iop->data1;
- iop->data1 = 0;
- iop->flags = LIBIO_FLAGS_OPEN;
- iop->size = 0;
- iop->offset = 0;
+
+ iop->driver = NULL;
+ iop->size = 0;
+ iop->offset = 0;
+ iop->flags = LIBIO_FLAGS_OPEN;
+ iop->pathinfo.node_access = NULL;
+ iop->pathinfo.handlers = NULL;
+ iop->pathinfo.ops = NULL;
+ iop->pathinfo.mt_entry = NULL;
+ iop->data0 = 0;
+ iop->data1 = NULL;
+ iop->file_info = NULL;
+ iop->handlers = NULL;
+
goto done;
}
diff --git a/cpukit/include/rtems/libio_.h b/cpukit/include/rtems/libio_.h
index 7e0f6df71e..6a4943be75 100644
--- a/cpukit/include/rtems/libio_.h
+++ b/cpukit/include/rtems/libio_.h
@@ -165,8 +165,9 @@ extern rtems_libio_t *rtems_libio_iop_freelist;
#define rtems_filesystem_freenode( _node ) \
do { \
- if ( (_node)->ops->freenod_h ) \
- (*(_node)->ops->freenod_h)( (_node) ); \
+ if ( (_node)->ops )\
+ if ( (_node)->ops->freenod_h ) \
+ (*(_node)->ops->freenod_h)( (_node) ); \
} while (0)
/*
diff --git a/cpukit/libcsupport/include/rtems/libio_.h b/cpukit/libcsupport/include/rtems/libio_.h
index 7e0f6df71e..6a4943be75 100644
--- a/cpukit/libcsupport/include/rtems/libio_.h
+++ b/cpukit/libcsupport/include/rtems/libio_.h
@@ -165,8 +165,9 @@ extern rtems_libio_t *rtems_libio_iop_freelist;
#define rtems_filesystem_freenode( _node ) \
do { \
- if ( (_node)->ops->freenod_h ) \
- (*(_node)->ops->freenod_h)( (_node) ); \
+ if ( (_node)->ops )\
+ if ( (_node)->ops->freenod_h ) \
+ (*(_node)->ops->freenod_h)( (_node) ); \
} while (0)
/*
diff --git a/cpukit/libcsupport/src/libio.c b/cpukit/libcsupport/src/libio.c
index 1216ec15a5..f5cd36dbd9 100644
--- a/cpukit/libcsupport/src/libio.c
+++ b/cpukit/libcsupport/src/libio.c
@@ -206,10 +206,20 @@ rtems_libio_t *rtems_libio_allocate( void )
if (rc != RTEMS_SUCCESSFUL)
goto failed;
rtems_libio_iop_freelist = iop->data1;
- iop->data1 = 0;
- iop->flags = LIBIO_FLAGS_OPEN;
- iop->size = 0;
- iop->offset = 0;
+
+ iop->driver = NULL;
+ iop->size = 0;
+ iop->offset = 0;
+ iop->flags = LIBIO_FLAGS_OPEN;
+ iop->pathinfo.node_access = NULL;
+ iop->pathinfo.handlers = NULL;
+ iop->pathinfo.ops = NULL;
+ iop->pathinfo.mt_entry = NULL;
+ iop->data0 = 0;
+ iop->data1 = NULL;
+ iop->file_info = NULL;
+ iop->handlers = NULL;
+
goto done;
}