From 66ce70eb400b4eef027f1ea538b8a3be641e3b0d Mon Sep 17 00:00:00 2001 From: "kin%netscape.com" Date: Mon, 30 Aug 1999 14:48:29 +0000 Subject: [PATCH] Got rid of static buffer in nsEditorTxnLog::GetString(). git-svn-id: svn://10.0.0.236/trunk@45154 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/editor/base/nsEditorTxnLog.cpp | 50 +++++++++++++------ mozilla/editor/base/nsEditorTxnLog.h | 2 +- .../editor/libeditor/html/nsEditorTxnLog.cpp | 50 +++++++++++++------ .../editor/libeditor/html/nsEditorTxnLog.h | 2 +- 4 files changed, 72 insertions(+), 32 deletions(-) diff --git a/mozilla/editor/base/nsEditorTxnLog.cpp b/mozilla/editor/base/nsEditorTxnLog.cpp index 0e8f63535fe..8b0324a1f97 100644 --- a/mozilla/editor/base/nsEditorTxnLog.cpp +++ b/mozilla/editor/base/nsEditorTxnLog.cpp @@ -22,6 +22,7 @@ #define LOCK_LOG(doc) #define UNLOCK_LOG(doc) +#define MAX_BUF_LENGTH 256 static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); @@ -88,9 +89,11 @@ nsEditorTxnLog::WillDo(nsITransactionManager *aTxMgr, nsITransaction *aTransacti { LOCK_LOG(this); + char buf[MAX_BUF_LENGTH]; + PrintIndent(mIndentLevel++); Write("WillDo: "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write("\n"); Flush(); @@ -104,9 +107,11 @@ nsEditorTxnLog::DidDo(nsITransactionManager *aTxMgr, nsITransaction *aTransactio { LOCK_LOG(this); + char buf[MAX_BUF_LENGTH]; + PrintIndent(--mIndentLevel); Write("DidDo: "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write("("); WriteInt("%d", aDoResult); Write(")\n"); @@ -126,8 +131,10 @@ nsEditorTxnLog::WillUndo(nsITransactionManager *aTxMgr, nsITransaction *aTransac if (aTransaction) { + char buf[MAX_BUF_LENGTH]; + Write("WillUndo: "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write("\n"); } else @@ -149,8 +156,10 @@ nsEditorTxnLog::DidUndo(nsITransactionManager *aTxMgr, nsITransaction *aTransact if (aTransaction) { + char buf[MAX_BUF_LENGTH]; + Write("DidUndo: "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write("("); WriteInt("%d", aUndoResult); Write(")\n"); @@ -178,8 +187,10 @@ nsEditorTxnLog::WillRedo(nsITransactionManager *aTxMgr, nsITransaction *aTransac if (aTransaction) { + char buf[MAX_BUF_LENGTH]; + Write("WillRedo: "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write("\n"); } else @@ -201,8 +212,10 @@ nsEditorTxnLog::DidRedo(nsITransactionManager *aTxMgr, nsITransaction *aTransact if (aTransaction) { + char buf[MAX_BUF_LENGTH]; + Write("DidRedo: "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write(" ("); WriteInt("%d", aRedoResult); Write(")\n"); @@ -294,11 +307,13 @@ nsEditorTxnLog::WillMerge(nsITransactionManager *aTxMgr, nsITransaction *aTopTra { LOCK_LOG(this); + char buf[MAX_BUF_LENGTH]; + PrintIndent(mIndentLevel); Write("WillMerge: "); - Write(GetString(aTopTransaction)); + Write(GetString(aTopTransaction, buf, MAX_BUF_LENGTH)); Write(" <-- "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write("\n"); Flush(); @@ -312,11 +327,13 @@ nsEditorTxnLog::DidMerge(nsITransactionManager *aTxMgr, nsITransaction *aTopTran { LOCK_LOG(this); + char buf[MAX_BUF_LENGTH]; + PrintIndent(mIndentLevel); Write("DidMerge: "); - Write(GetString(aTopTransaction)); + Write(GetString(aTopTransaction, buf, MAX_BUF_LENGTH)); Write(" <-- "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write(" ("); Write(aDidMerge ? "TRUE" : "FALSE"); Write(", "); @@ -330,9 +347,12 @@ nsEditorTxnLog::DidMerge(nsITransactionManager *aTxMgr, nsITransaction *aTopTran } const char * -nsEditorTxnLog::GetString(nsITransaction *aTransaction) +nsEditorTxnLog::GetString(nsITransaction *aTransaction, char *aBuffer, PRInt32 aBufferLength) { - static char buf[256]; + if (!aBuffer || aBufferLength < 1) + return 0; + + aBuffer[0] = '\0'; nsString str = ""; @@ -341,10 +361,10 @@ nsEditorTxnLog::GetString(nsITransaction *aTransaction) if (str.Length() == 0) str = ""; - buf[0] = '\0'; - str.ToCString(buf, 256); + str.ToCString(aBuffer, aBufferLength); + aBuffer[aBufferLength - 1] = '\0'; - return buf; + return aBuffer; } nsresult diff --git a/mozilla/editor/base/nsEditorTxnLog.h b/mozilla/editor/base/nsEditorTxnLog.h index f5be21ccfbe..395a5b627cf 100644 --- a/mozilla/editor/base/nsEditorTxnLog.h +++ b/mozilla/editor/base/nsEditorTxnLog.h @@ -67,7 +67,7 @@ public: private: /* nsEditorTxnLog private methods. */ - const char *GetString(nsITransaction *aTransaction); + const char *GetString(nsITransaction *aTransaction, char *aBuffer, PRInt32 aBufLength); nsresult PrintIndent(PRInt32 aIndentLevel); nsresult Write(const char *aBuffer); nsresult WriteInt(const char *aFormat, PRInt32 aInt); diff --git a/mozilla/editor/libeditor/html/nsEditorTxnLog.cpp b/mozilla/editor/libeditor/html/nsEditorTxnLog.cpp index 0e8f63535fe..8b0324a1f97 100644 --- a/mozilla/editor/libeditor/html/nsEditorTxnLog.cpp +++ b/mozilla/editor/libeditor/html/nsEditorTxnLog.cpp @@ -22,6 +22,7 @@ #define LOCK_LOG(doc) #define UNLOCK_LOG(doc) +#define MAX_BUF_LENGTH 256 static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); @@ -88,9 +89,11 @@ nsEditorTxnLog::WillDo(nsITransactionManager *aTxMgr, nsITransaction *aTransacti { LOCK_LOG(this); + char buf[MAX_BUF_LENGTH]; + PrintIndent(mIndentLevel++); Write("WillDo: "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write("\n"); Flush(); @@ -104,9 +107,11 @@ nsEditorTxnLog::DidDo(nsITransactionManager *aTxMgr, nsITransaction *aTransactio { LOCK_LOG(this); + char buf[MAX_BUF_LENGTH]; + PrintIndent(--mIndentLevel); Write("DidDo: "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write("("); WriteInt("%d", aDoResult); Write(")\n"); @@ -126,8 +131,10 @@ nsEditorTxnLog::WillUndo(nsITransactionManager *aTxMgr, nsITransaction *aTransac if (aTransaction) { + char buf[MAX_BUF_LENGTH]; + Write("WillUndo: "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write("\n"); } else @@ -149,8 +156,10 @@ nsEditorTxnLog::DidUndo(nsITransactionManager *aTxMgr, nsITransaction *aTransact if (aTransaction) { + char buf[MAX_BUF_LENGTH]; + Write("DidUndo: "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write("("); WriteInt("%d", aUndoResult); Write(")\n"); @@ -178,8 +187,10 @@ nsEditorTxnLog::WillRedo(nsITransactionManager *aTxMgr, nsITransaction *aTransac if (aTransaction) { + char buf[MAX_BUF_LENGTH]; + Write("WillRedo: "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write("\n"); } else @@ -201,8 +212,10 @@ nsEditorTxnLog::DidRedo(nsITransactionManager *aTxMgr, nsITransaction *aTransact if (aTransaction) { + char buf[MAX_BUF_LENGTH]; + Write("DidRedo: "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write(" ("); WriteInt("%d", aRedoResult); Write(")\n"); @@ -294,11 +307,13 @@ nsEditorTxnLog::WillMerge(nsITransactionManager *aTxMgr, nsITransaction *aTopTra { LOCK_LOG(this); + char buf[MAX_BUF_LENGTH]; + PrintIndent(mIndentLevel); Write("WillMerge: "); - Write(GetString(aTopTransaction)); + Write(GetString(aTopTransaction, buf, MAX_BUF_LENGTH)); Write(" <-- "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write("\n"); Flush(); @@ -312,11 +327,13 @@ nsEditorTxnLog::DidMerge(nsITransactionManager *aTxMgr, nsITransaction *aTopTran { LOCK_LOG(this); + char buf[MAX_BUF_LENGTH]; + PrintIndent(mIndentLevel); Write("DidMerge: "); - Write(GetString(aTopTransaction)); + Write(GetString(aTopTransaction, buf, MAX_BUF_LENGTH)); Write(" <-- "); - Write(GetString(aTransaction)); + Write(GetString(aTransaction, buf, MAX_BUF_LENGTH)); Write(" ("); Write(aDidMerge ? "TRUE" : "FALSE"); Write(", "); @@ -330,9 +347,12 @@ nsEditorTxnLog::DidMerge(nsITransactionManager *aTxMgr, nsITransaction *aTopTran } const char * -nsEditorTxnLog::GetString(nsITransaction *aTransaction) +nsEditorTxnLog::GetString(nsITransaction *aTransaction, char *aBuffer, PRInt32 aBufferLength) { - static char buf[256]; + if (!aBuffer || aBufferLength < 1) + return 0; + + aBuffer[0] = '\0'; nsString str = ""; @@ -341,10 +361,10 @@ nsEditorTxnLog::GetString(nsITransaction *aTransaction) if (str.Length() == 0) str = ""; - buf[0] = '\0'; - str.ToCString(buf, 256); + str.ToCString(aBuffer, aBufferLength); + aBuffer[aBufferLength - 1] = '\0'; - return buf; + return aBuffer; } nsresult diff --git a/mozilla/editor/libeditor/html/nsEditorTxnLog.h b/mozilla/editor/libeditor/html/nsEditorTxnLog.h index f5be21ccfbe..395a5b627cf 100644 --- a/mozilla/editor/libeditor/html/nsEditorTxnLog.h +++ b/mozilla/editor/libeditor/html/nsEditorTxnLog.h @@ -67,7 +67,7 @@ public: private: /* nsEditorTxnLog private methods. */ - const char *GetString(nsITransaction *aTransaction); + const char *GetString(nsITransaction *aTransaction, char *aBuffer, PRInt32 aBufLength); nsresult PrintIndent(PRInt32 aIndentLevel); nsresult Write(const char *aBuffer); nsresult WriteInt(const char *aFormat, PRInt32 aInt);