summaryrefslogtreecommitdiff
path: root/ACE/ace/DEV_IO.cpp
diff options
context:
space:
mode:
authorAdam Mitz <mitza@ociweb.com>2015-11-06 17:07:11 -0600
committerAdam Mitz <mitza@ociweb.com>2015-11-06 17:07:11 -0600
commitac5e1702c9f9bee9f1f7bfce8c1a6f3847ea6b4b (patch)
tree0e70d1f51c39e688a05a6cdc2af58408222e4a0d /ACE/ace/DEV_IO.cpp
parent5272b5b81f92c298cb998b5bb0b0dbca3e7f29fe (diff)
downloadATCD-ac5e1702c9f9bee9f1f7bfce8c1a6f3847ea6b4b.tar.gz
Merged branch ace-face-safety (FACE Safety Profile import from OCITAO).
Diffstat (limited to 'ACE/ace/DEV_IO.cpp')
-rw-r--r--ACE/ace/DEV_IO.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/ACE/ace/DEV_IO.cpp b/ACE/ace/DEV_IO.cpp
index bc619e27f36..f1dcda42978 100644
--- a/ACE/ace/DEV_IO.cpp
+++ b/ACE/ace/DEV_IO.cpp
@@ -1,5 +1,8 @@
#include "ace/DEV_IO.h"
#include "ace/Log_Category.h"
+#if defined (ACE_HAS_ALLOC_HOOKS)
+# include "ace/Malloc_Base.h"
+#endif /* ACE_HAS_ALLOC_HOOKS */
#if !defined (__ACE_INLINE__)
#include "ace/DEV_IO.inl"
@@ -62,15 +65,26 @@ ssize_t
ACE_DEV_IO::send (size_t n, ...) const
{
ACE_TRACE ("ACE_DEV_IO::send");
+#ifdef ACE_LACKS_VA_FUNCTIONS
+ ACE_UNUSED_ARG (n);
+ ACE_NOTSUP_RETURN (-1);
+#else
va_list argp;
int total_tuples = static_cast<int> (n / 2);
iovec *iovp;
#if defined (ACE_HAS_ALLOCA)
iovp = (iovec *) alloca (total_tuples * sizeof (iovec));
#else
+# ifdef ACE_HAS_ALLOC_HOOKS
+ ACE_ALLOCATOR_RETURN (iovp, (iovec *)
+ ACE_Allocator::instance ()->malloc (total_tuples *
+ sizeof (iovec)),
+ -1);
+# else
ACE_NEW_RETURN (iovp,
iovec[total_tuples],
-1);
+# endif /* ACE_HAS_ALLOC_HOOKS */
#endif /* !defined (ACE_HAS_ALLOCA) */
va_start (argp, n);
@@ -83,10 +97,15 @@ ACE_DEV_IO::send (size_t n, ...) const
ssize_t result = ACE_OS::writev (this->get_handle (), iovp, total_tuples);
#if !defined (ACE_HAS_ALLOCA)
+# ifdef ACE_HAS_ALLOC_HOOKS
+ ACE_Allocator::instance ()->free (iovp);
+# else
delete [] iovp;
+# endif /* ACE_HAS_ALLOC_HOOKS */
#endif /* !defined (ACE_HAS_ALLOCA) */
va_end (argp);
return result;
+#endif // ACE_LACKS_VA_FUNCTIONS
}
// This is basically an interface to ACE_OS::readv, that doesn't use the
@@ -99,15 +118,26 @@ ssize_t
ACE_DEV_IO::recv (size_t n, ...) const
{
ACE_TRACE ("ACE_DEV_IO::recv");
+#ifdef ACE_LACKS_VA_FUNCTIONS
+ ACE_UNUSED_ARG (n);
+ ACE_NOTSUP_RETURN (-1);
+#else
va_list argp;
int total_tuples = static_cast<int> (n / 2);
iovec *iovp;
#if defined (ACE_HAS_ALLOCA)
iovp = (iovec *) alloca (total_tuples * sizeof (iovec));
#else
+# ifdef ACE_HAS_ALLOC_HOOKS
+ ACE_ALLOCATOR_RETURN (iovp, (iovec *)
+ ACE_Allocator::instance ()->malloc (total_tuples *
+ sizeof (iovec)),
+ -1);
+# else
ACE_NEW_RETURN (iovp,
iovec[total_tuples],
-1);
+# endif /* ACE_HAS_ALLOC_HOOKS */
#endif /* !defined (ACE_HAS_ALLOCA) */
va_start (argp, n);
@@ -120,10 +150,15 @@ ACE_DEV_IO::recv (size_t n, ...) const
ssize_t result = ACE_OS::readv (this->get_handle (), iovp, total_tuples);
#if !defined (ACE_HAS_ALLOCA)
+# ifdef ACE_HAS_ALLOC_HOOKS
+ ACE_Allocator::instance ()->free (iovp);
+# else
delete [] iovp;
+# endif /* ACE_HAS_ALLOC_HOOKS */
#endif /* !defined (ACE_HAS_ALLOCA) */
va_end (argp);
return result;
+#endif // ACE_LACKS_VA_FUNCTIONS
}
ACE_END_VERSIONED_NAMESPACE_DECL