summaryrefslogtreecommitdiff
path: root/ACE/ace/Log_Record.cpp
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2006-10-11 15:45:18 +0000
committerSteve Huston <shuston@riverace.com>2006-10-11 15:45:18 +0000
commit5420b27967dedc3d5cbd013c8f7fc9f7118d6ce7 (patch)
tree1a34232bc876bad13c3f2ca9cb8c577c4b6e2f12 /ACE/ace/Log_Record.cpp
parent49b0d809e6a82001f305cf45097b68bd1565fe28 (diff)
downloadATCD-5420b27967dedc3d5cbd013c8f7fc9f7118d6ce7.tar.gz
ChangeLogTag:Wed Oct 11 15:24:04 UTC 2006 Steve Huston <shuston@riverace.com>
Diffstat (limited to 'ACE/ace/Log_Record.cpp')
-rw-r--r--ACE/ace/Log_Record.cpp51
1 files changed, 42 insertions, 9 deletions
diff --git a/ACE/ace/Log_Record.cpp b/ACE/ace/Log_Record.cpp
index ab30d20790b..db23d77cb73 100644
--- a/ACE/ace/Log_Record.cpp
+++ b/ACE/ace/Log_Record.cpp
@@ -7,6 +7,7 @@
#include "ace/OS_NS_stdio.h"
#include "ace/OS_NS_time.h"
#include "ace/CDR_Stream.h"
+#include "ace/Auto_Ptr.h"
#if !defined (__ACE_INLINE__)
# include "ace/Log_Record.inl"
@@ -111,18 +112,29 @@ ACE_Log_Record::dump (void) const
ACE_DEBUG ((LM_DEBUG, ACE_LIB_TEXT ("\ntype_ = %u\n"), this->type_));
ACE_DEBUG ((LM_DEBUG, ACE_LIB_TEXT ("\ntime_stamp_ = (%d, %d)\n"), this->secs_, this->usecs_));
ACE_DEBUG ((LM_DEBUG, ACE_LIB_TEXT ("\npid_ = %u\n"), this->pid_));
- ACE_DEBUG ((LM_DEBUG, ACE_LIB_TEXT ("\nmsg_data_ = %s\n"), this->msg_data_));
+ ACE_DEBUG ((LM_DEBUG, ACE_LIB_TEXT ("\nmsg_data_ (0x%@) = %s\n"),
+ this->msg_data_, this->msg_data_));
+ ACE_DEBUG ((LM_DEBUG, ACE_LIB_TEXT ("\nmsg_data_size_ = ") ACE_SIZE_T_FORMAT_SPECIFIER ACE_LIB_TEXT ("\n"), this->msg_data_size_));
ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
#endif /* ACE_HAS_DUMP */
}
-void
+int
ACE_Log_Record::msg_data (const ACE_TCHAR *data)
{
// ACE_TRACE ("ACE_Log_Record::msg_data");
- ACE_OS::strsncpy (this->msg_data_, data,
- (MAXLOGMSGLEN / sizeof (ACE_TCHAR)));
+ size_t newlen = ACE_OS::strlen (data) + 1; // Will need room for '\0'
+ if (newlen > this->msg_data_size_)
+ {
+ ACE_TCHAR *new_msg_data;
+ ACE_NEW_RETURN (new_msg_data, ACE_TCHAR[newlen], -1);
+ delete [] this->msg_data_;
+ this->msg_data_ = new_msg_data;
+ this->msg_data_size_ = newlen;
+ }
+ ACE_OS::strcpy (this->msg_data_, data);
this->round_up ();
+ return 0;
}
ACE_Log_Record::ACE_Log_Record (ACE_Log_Priority lp,
@@ -133,10 +145,16 @@ ACE_Log_Record::ACE_Log_Record (ACE_Log_Priority lp,
secs_ (ts_sec),
usecs_ (0),
pid_ (ACE_UINT32 (p)),
- msg_data_ (0)
+ msg_data_ (0),
+ msg_data_size_ (0)
{
// ACE_TRACE ("ACE_Log_Record::ACE_Log_Record");
ACE_NEW_NORETURN (this->msg_data_, ACE_TCHAR[MAXLOGMSGLEN]);
+ if (0 != this->msg_data_)
+ {
+ this->msg_data_size_ = MAXLOGMSGLEN;
+ this->msg_data_[0] = '\0';
+ }
}
ACE_Log_Record::ACE_Log_Record (ACE_Log_Priority lp,
@@ -147,10 +165,16 @@ ACE_Log_Record::ACE_Log_Record (ACE_Log_Priority lp,
secs_ ((ACE_UINT32) ts.sec ()),
usecs_ ((ACE_UINT32) ts.usec ()),
pid_ (ACE_UINT32 (p)),
- msg_data_ (0)
+ msg_data_ (0),
+ msg_data_size_ (0)
{
// ACE_TRACE ("ACE_Log_Record::ACE_Log_Record");
ACE_NEW_NORETURN (this->msg_data_, ACE_TCHAR[MAXLOGMSGLEN]);
+ if (0 != this->msg_data_)
+ {
+ this->msg_data_size_ = MAXLOGMSGLEN;
+ this->msg_data_[0] = '\0';
+ }
}
void
@@ -172,10 +196,16 @@ ACE_Log_Record::ACE_Log_Record (void)
secs_ (0),
usecs_ (0),
pid_ (0),
- msg_data_ (0)
+ msg_data_ (0),
+ msg_data_size_ (0)
{
// ACE_TRACE ("ACE_Log_Record::ACE_Log_Record");
ACE_NEW_NORETURN (this->msg_data_, ACE_TCHAR[MAXLOGMSGLEN]);
+ if (0 != this->msg_data_)
+ {
+ this->msg_data_size_ = MAXLOGMSGLEN;
+ this->msg_data_[0] = '\0';
+ }
}
int
@@ -324,7 +354,9 @@ operator>> (ACE_InputCDR &cdr,
// Extract each field from input CDR stream into <log_record>.
if ((cdr >> type) && (cdr >> pid) && (cdr >> sec) && (cdr >> usec)
&& (cdr >> buffer_len)) {
- ACE_TCHAR *log_msg = new ACE_TCHAR[buffer_len + 1];
+ ACE_TCHAR *log_msg;
+ ACE_NEW_RETURN (log_msg, ACE_TCHAR[buffer_len + 1], -1);
+ auto_ptr<ACE_TCHAR> log_msg_p (log_msg);
log_record.type (type);
log_record.pid (pid);
log_record.time_stamp (ACE_Time_Value (sec, usec));
@@ -334,7 +366,8 @@ operator>> (ACE_InputCDR &cdr,
cdr.read_char_array (log_msg, buffer_len);
#endif /* ACE_USES_WCHAR */
log_msg[buffer_len] = '\0';
- log_record.set_msg_data_ptr (log_msg);
+ if (-1 == log_record.msg_data (log_msg))
+ return -1;
}
return cdr.good_bit ();
}