From c303f6baa9106d7bb9373b119cba13d574d24d29 Mon Sep 17 00:00:00 2001
From: McCabe Maxsted
Date: Fri, 10 Jun 2011 17:31:48 -0700
Subject: Check for when a profile's born on date field gets sent invalid data
---
linden/indra/newview/llpanelavatar.cpp | 52 +++++++++++++---------
.../skins/default/xui/en-us/panel_avatar.xml | 3 ++
2 files changed, 33 insertions(+), 22 deletions(-)
diff --git a/linden/indra/newview/llpanelavatar.cpp b/linden/indra/newview/llpanelavatar.cpp
index 4f041f5..0a668ba 100644
--- a/linden/indra/newview/llpanelavatar.cpp
+++ b/linden/indra/newview/llpanelavatar.cpp
@@ -1953,29 +1953,37 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
self->mPanelSecondLife->childSetValue("acct", caption_text);
//Chalice - Show avatar age in days.
- S32 year;
- S32 month;
- S32 day;
+ S32 year = 0;
+ S32 month = 0;
+ S32 day = 0;
sscanf(born_on.c_str(), "%d/%d/%d", &month, &day, &year);
- time_t now = time(NULL);
- struct tm * timeinfo;
- timeinfo = localtime(&now);
- timeinfo->tm_mon = --month;
- timeinfo->tm_year = year - 1900;
- timeinfo->tm_mday = day;
- time_t birth = mktime(timeinfo);
-
- std::stringstream numberString;
- S32 days = difftime(now, birth) / 86400; //(60*60*24)
- if (days < 0) days = 0; // Happens for people on different timezones -- MC
- numberString << days;
-
- LLStringUtil::format_map_t targs;
- targs["[DAYS]"] = numberString.str();
- std::string born_msg = self->mPanelSecondLife->getString("days_old_text");
- LLStringUtil::format(born_msg, targs);
- born_on += " ";
- born_on += born_msg;
+ if (year == 0 || month == 0 || day == 0)
+ {
+ // In case the string sent gets screwed up. It happens -- MC
+ born_on = self->mPanelSecondLife->getString("invalid");
+ }
+ else
+ {
+ time_t now = time(NULL);
+ struct tm * timeinfo;
+ timeinfo = localtime(&now);
+ timeinfo->tm_mon = --month;
+ timeinfo->tm_year = year - 1900;
+ timeinfo->tm_mday = day;
+ time_t birth = mktime(timeinfo);
+
+ std::stringstream numberString;
+ S32 days = difftime(now, birth) / 86400; //(60*60*24)
+ if (days < 0) days = 0; // Happens for people on different timezones -- MC
+ numberString << days;
+
+ LLStringUtil::format_map_t targs;
+ targs["[DAYS]"] = numberString.str();
+ std::string born_msg = self->mPanelSecondLife->getString("days_old_text");
+ LLStringUtil::format(born_msg, targs);
+ born_on += " ";
+ born_on += born_msg;
+ }
self->mPanelSecondLife->childSetValue("born", born_on);
EOnlineStatus online_status = (online) ? ONLINE_STATUS_YES : ONLINE_STATUS_NO;
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml b/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml
index f459e6a..6076eb9 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml
@@ -42,6 +42,9 @@
([DAYS] days old)
+
+ (invalid)
+