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) +