summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/religion.cc
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-25 19:47:37 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-25 19:47:37 +0000
commite3b9a7a1e14dd81cace9e2241679c5a92eba6006 (patch)
treee3f48acadb2eb14be1cd282b11496622be261e4a /crawl-ref/source/religion.cc
parenteef749ceb30bf5694dfe06646fde3f2493dc1fa0 (diff)
downloadcrawl-ref-e3b9a7a1e14dd81cace9e2241679c5a92eba6006.tar.gz
crawl-ref-e3b9a7a1e14dd81cace9e2241679c5a92eba6006.zip
For functions that return char*'s, don't return a c_str() of an
std::string, since as soon as the function returns, the std::string goes out of scope, and the c_str() becomes a dangling pointer, which usually points to the same area as before, but occasionally points to garbage. Instead, make them return std::string's, and call c_str() on the return value outside the functions. Among other things, this should fix [1999515]. Note that I've only fixed direct c_str() returns for now. There might be some indirect ones that I missed. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6139 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/religion.cc')
-rw-r--r--crawl-ref/source/religion.cc10
1 files changed, 5 insertions, 5 deletions
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index 5d05bd6a9f..3f8fb9e2c1 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -4532,12 +4532,12 @@ static bool _beogh_followers_abandon_you()
}
// currently only used when orcish idols have been destroyed
-static const char* _get_beogh_speech(const std::string key)
+static std::string _get_beogh_speech(const std::string key)
{
std::string result = getSpeakString("Beogh " + key);
if (!result.empty())
- return (result.c_str());
+ return (result);
return ("Beogh is angry!");
}
@@ -4555,11 +4555,11 @@ void beogh_idol_revenge()
const char *revenge;
if (you.religion == GOD_BEOGH)
- revenge = _get_beogh_speech("idol follower");
+ revenge = _get_beogh_speech("idol follower").c_str();
else if (you.species == SP_HILL_ORC)
- revenge = _get_beogh_speech("idol hill orc");
+ revenge = _get_beogh_speech("idol hill orc").c_str();
else
- revenge = _get_beogh_speech("idol other");
+ revenge = _get_beogh_speech("idol other").c_str();
god_smites_you(GOD_BEOGH, KILLED_BY_BEOGH_SMITING, revenge);