no longer free() a title pointer that wasn't malloced, but instead came from the outside (right from the middle of some port link stuff)

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14605 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Marcus Overhagen
2005-11-01 01:11:26 +00:00
parent e70c238dd9
commit 051d07f0fc
2 changed files with 8 additions and 20 deletions
+7 -19
View File
@@ -131,7 +131,7 @@ struct dw_sync_data {
ServerWindow::ServerWindow(const char *title, ServerApp *app, ServerWindow::ServerWindow(const char *title, ServerApp *app,
port_id clientPort, port_id looperPort, int32 handlerID) port_id clientPort, port_id looperPort, int32 handlerID)
: MessageLooper(title && *title ? title : "Unnamed Window"), : MessageLooper(title && *title ? title : "Unnamed Window"),
fTitle(title), fTitle(strdup(title && *title ? title : "Unnamed Window")),
fDesktop(app->GetDesktop()), fDesktop(app->GetDesktop()),
fServerApp(app), fServerApp(app),
fWinBorder(NULL), fWinBorder(NULL),
@@ -160,7 +160,7 @@ ServerWindow::~ServerWindow()
delete fWinBorder; delete fWinBorder;
free(const_cast<char *>(fTitle)); free(fTitle);
delete_port(fMessagePort); delete_port(fMessagePort);
BPrivate::gDefaultTokens.RemoveToken(fServerToken); BPrivate::gDefaultTokens.RemoveToken(fServerToken);
@@ -173,11 +173,6 @@ ServerWindow::~ServerWindow()
status_t status_t
ServerWindow::Init(BRect frame, uint32 look, uint32 feel, uint32 flags, uint32 workspace) ServerWindow::Init(BRect frame, uint32 look, uint32 feel, uint32 flags, uint32 workspace)
{ {
if (fTitle == NULL)
fTitle = strdup("Unnamed Window");
if (fTitle == NULL)
return B_NO_MEMORY;
// fMessagePort is the port to which the app sends messages for the server // fMessagePort is the port to which the app sends messages for the server
fMessagePort = create_port(100, fTitle); fMessagePort = create_port(100, fTitle);
if (fMessagePort < B_OK) if (fMessagePort < B_OK)
@@ -304,19 +299,12 @@ ServerWindow::Hide()
void void
ServerWindow::SetTitle(const char* newTitle) ServerWindow::SetTitle(const char* newTitle)
{ {
const char* oldTitle = fTitle; char *title = strdup(newTitle && *newTitle ? newTitle : "Unnamed Window");
if (!title)
if (newTitle == NULL || !newTitle[0])
fTitle = strdup("Unnamed Window");
else
fTitle = strdup(newTitle);
if (fTitle == NULL) {
fTitle = oldTitle;
return; return;
}
free(fTitle);
free(const_cast<char*>(oldTitle)); fTitle = title;
if (Thread() >= B_OK) { if (Thread() >= B_OK) {
char name[B_OS_NAME_LENGTH]; char name[B_OS_NAME_LENGTH];
+1 -1
View File
@@ -128,7 +128,7 @@ private:
BPoint where); BPoint where);
private: private:
const char* fTitle; char * fTitle;
Desktop* fDesktop; Desktop* fDesktop;
ServerApp* fServerApp; ServerApp* fServerApp;