X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1408104d04fdea106c8ec288866c4143078ae71b..77611ad4da9df336a0805508276a81b8f4437107:/src/generic/prop.cpp diff --git a/src/generic/prop.cpp b/src/generic/prop.cpp index 360c7bd864..ad6d3b521e 100644 --- a/src/generic/prop.cpp +++ b/src/generic/prop.cpp @@ -47,6 +47,7 @@ wxPropertyValue::wxPropertyValue(void) wxPropertyValue::wxPropertyValue(const wxPropertyValue& copyFrom) { + m_value.string = (wxChar*) NULL; m_modifiedFlag = FALSE; Copy((wxPropertyValue& )copyFrom); } @@ -328,9 +329,7 @@ wxPropertyValue *wxPropertyValue::NewCopy(void) const return new wxPropertyValue(m_value.stringPtr); case wxPropertyValueNull: -#ifdef __X__ - cerr << "Should never get here!\n"; -#endif + wxFAIL_MSG( wxT("Should never get here!\n" ) ); break; } return NULL; @@ -338,6 +337,11 @@ wxPropertyValue *wxPropertyValue::NewCopy(void) const void wxPropertyValue::Copy(wxPropertyValue& copyFrom) { + if (m_type == wxPropertyValueString) + { + delete[] m_value.string ; + m_value.string = NULL; + } m_type = copyFrom.Type(); switch (m_type) @@ -371,12 +375,18 @@ void wxPropertyValue::Copy(wxPropertyValue& copyFrom) case wxPropertyValueStringPtr: { wxChar** s = copyFrom.StringValuePtr(); + +#if 0 // what is this? are you trying to assign a bool or a string? VA can't figure it out.. -#if defined(__VISAGECPP__) +#if defined(__VISAGECPP__) || defined( __VISUALC__ ) (*this) = s; #else (*this) = s != 0; #endif +#endif // if 0 + + (*this) = (bool)(s != 0); + return ; } @@ -395,9 +405,7 @@ void wxPropertyValue::Copy(wxPropertyValue& copyFrom) return; } case wxPropertyValueNull: -#ifdef __X__ - cerr << "Should never get here!\n"; -#endif + wxFAIL_MSG( wxT("Should never get here!\n" ) ); break; } } @@ -459,20 +467,20 @@ void wxPropertyValue::WritePropertyClause(wxString& stream) // Write this expre if (node) { node->WritePropertyType(stream); - stream.Append( _T("(") ); + stream.Append( wxT("(") ); node = node->m_next; bool first = TRUE; while (node) { if (!first) - stream.Append( _T(" ") ); + stream.Append( wxT(" ") ); node->WritePropertyType(stream); node = node->m_next; if (node) - stream.Append( _T(",\n" ) ); + stream.Append( wxT(",\n" ) ); first = FALSE; } - stream.Append( _T(").\n\n") ); + stream.Append( wxT(").\n\n") ); } } @@ -483,43 +491,43 @@ void wxPropertyValue::WritePropertyType(wxString& stream) // Write as any oth { case wxPropertyValueInteger: { - tmp.Printf( _T("%ld"), m_value.integer ); + tmp.Printf( wxT("%ld"), m_value.integer ); stream.Append( tmp ); break; } case wxPropertyValueIntegerPtr: { - tmp.Printf( _T("%ld"), *m_value.integerPtr ); + tmp.Printf( wxT("%ld"), *m_value.integerPtr ); stream.Append( tmp ); break; } case wxPropertyValuebool: { if (m_value.integer) - stream.Append( _T("True") ); + stream.Append( wxT("True") ); else - stream.Append( _T("False") ); + stream.Append( wxT("False") ); break; } case wxPropertyValueboolPtr: { if (*m_value.integerPtr) - stream.Append( _T("True") ); + stream.Append( wxT("True") ); else - stream.Append( _T("False") ); + stream.Append( wxT("False") ); break; } case wxPropertyValueReal: { double d = m_value.real; - tmp.Printf( _T("%.6g"), d ); + tmp.Printf( wxT("%.6g"), d ); stream.Append( tmp ); break; } case wxPropertyValueRealPtr: { double d = *m_value.realPtr; - tmp.Printf( _T("%.6g"), d ); + tmp.Printf( wxT("%.6g"), d ); stream.Append( tmp ); break; } @@ -530,7 +538,7 @@ void wxPropertyValue::WritePropertyType(wxString& stream) // Write as any oth } case wxPropertyValueStringPtr: { - wxFAIL_MSG( _T("wxPropertyValue::WritePropertyType( wxPropertyValueStringPtr ) not implemented") ); + wxFAIL_MSG( wxT("wxPropertyValue::WritePropertyType( wxPropertyValueStringPtr ) not implemented") ); /* int i; int len = strlen(*(m_value.stringPtr)); @@ -545,20 +553,20 @@ void wxPropertyValue::WritePropertyType(wxString& stream) // Write as any oth case wxPropertyValueList: { if (!m_value.first) - stream.Append( _T("[]") ); + stream.Append( wxT("[]") ); else { wxPropertyValue *expr = m_value.first; - stream.Append( _T("[") ); + stream.Append( wxT("[") ); while (expr) { expr->WritePropertyType(stream); expr = expr->m_next; if (expr) - stream.Append( _T(", ") ); + stream.Append( wxT(", ") ); } - stream.Append( _T("]") ); + stream.Append( wxT("]") ); } break; } @@ -585,6 +593,14 @@ void wxPropertyValue::operator=(const wxString& val1) const wxChar *val = (const wxChar *)val1; m_modifiedFlag = TRUE; + + wxPropertyValueType oldType = m_type; + if (oldType == wxPropertyValueString) + { + delete[] m_value.string ; + m_value.string = NULL; + } + if (m_type == wxPropertyValueNull) m_type = wxPropertyValueString; @@ -597,8 +613,7 @@ void wxPropertyValue::operator=(const wxString& val1) } else if (m_type == wxPropertyValueStringPtr) { - if (*m_value.stringPtr) - delete[] *m_value.stringPtr; + wxFAIL_MSG( wxT("Shouldn't try to assign a wxString reference to a char* pointer.") ); if (val) *m_value.stringPtr = copystring(val); else @@ -613,6 +628,13 @@ void wxPropertyValue::operator=(const wxString& val1) void wxPropertyValue::operator=(const long val) { + wxPropertyValueType oldType = m_type; + if (oldType == wxPropertyValueString) + { + delete[] m_value.string ; + m_value.string = NULL; + } + m_modifiedFlag = TRUE; if (m_type == wxPropertyValueNull) m_type = wxPropertyValueInteger; @@ -632,6 +654,13 @@ void wxPropertyValue::operator=(const long val) void wxPropertyValue::operator=(const bool val) { + wxPropertyValueType oldType = m_type; + if (oldType == wxPropertyValueString) + { + delete[] m_value.string ; + m_value.string = NULL; + } + m_modifiedFlag = TRUE; if (m_type == wxPropertyValueNull) m_type = wxPropertyValuebool; @@ -647,6 +676,13 @@ void wxPropertyValue::operator=(const bool val) void wxPropertyValue::operator=(const float val) { + wxPropertyValueType oldType = m_type; + if (oldType == wxPropertyValueString) + { + delete[] m_value.string ; + m_value.string = NULL; + } + m_modifiedFlag = TRUE; if (m_type == wxPropertyValueNull) m_type = wxPropertyValueReal; @@ -666,6 +702,13 @@ void wxPropertyValue::operator=(const float val) void wxPropertyValue::operator=(const wxChar **val) { + wxPropertyValueType oldType = m_type; + if (oldType == wxPropertyValueString) + { + delete[] m_value.string ; + m_value.string = NULL; + } + m_modifiedFlag = TRUE; m_type = wxPropertyValueStringPtr; @@ -1095,13 +1138,13 @@ bool wxPropertyValidator::StringToLong (wxChar *s, long *number) { wxChar *wxPropertyValidator::FloatToString (float number) { static wxChar buf[20]; - wxSprintf (buf, _T("%.6g"), number); + wxSprintf (buf, wxT("%.6g"), number); return buf; } wxChar *wxPropertyValidator::DoubleToString (double number) { static wxChar buf[20]; - wxSprintf (buf, _T("%.6g"), number); + wxSprintf (buf, wxT("%.6g"), number); return buf; }