Fix for quest::GetZoneLongName(zone_short_name) garbled output (#1134)

This commit is contained in:
Chris Miles 2020-10-31 18:47:43 -05:00 committed by GitHub
parent 25c596656c
commit be12cad7bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 59 additions and 60 deletions

View File

@ -3733,10 +3733,11 @@ XS(XS__GetZoneLongName) {
if (items != 1) if (items != 1)
Perl_croak(aTHX_ "Usage: quest::GetZoneLongName(string zone)"); Perl_croak(aTHX_ "Usage: quest::GetZoneLongName(string zone)");
dXSTARG; dXSTARG;
char *zone = (char *) SvPV_nolen(ST(0));
Const_char *RETVAL = quest_manager.GetZoneLongName(zone);
sv_setpv(TARG, RETVAL); std::string zone = (std::string) SvPV_nolen(ST(0));
std::string RETVAL = quest_manager.GetZoneLongName(zone);
sv_setpv(TARG, RETVAL.c_str());
XSprePUSH; XSprePUSH;
PUSHTARG; PUSHTARG;
XSRETURN(1); XSRETURN(1);

View File

@ -3272,13 +3272,11 @@ int32 QuestManager::GetZoneID(const char *zone) {
return static_cast<int32>(ZoneID(zone)); return static_cast<int32>(ZoneID(zone));
} }
const char* QuestManager::GetZoneLongName(const char *zone) { std::string QuestManager::GetZoneLongName(std::string zone_short_name)
char *long_name; {
content_db.GetZoneLongName(zone, &long_name); return zone_store.GetZoneLongName(
std::string ln = long_name; zone_store.GetZoneID(zone_short_name)
safe_delete_array(long_name); );
return ln.c_str();
} }
void QuestManager::CrossZoneAssignTaskByCharID(int character_id, uint32 task_id, bool enforce_level_requirement) { void QuestManager::CrossZoneAssignTaskByCharID(int character_id, uint32 task_id, bool enforce_level_requirement) {

View File

@ -280,7 +280,7 @@ public:
void SendMail(const char *to, const char *from, const char *subject, const char *message); void SendMail(const char *to, const char *from, const char *subject, const char *message);
uint16 CreateDoor( const char* model, float x, float y, float z, float heading, uint8 opentype, uint16 size); uint16 CreateDoor( const char* model, float x, float y, float z, float heading, uint8 opentype, uint16 size);
int32 GetZoneID(const char *zone); int32 GetZoneID(const char *zone);
const char *GetZoneLongName(const char *zone); static std::string GetZoneLongName(std::string zone_short_name);
void CrossZoneAssignTaskByCharID(int character_id, uint32 task_id, bool enforce_level_requirement = false); void CrossZoneAssignTaskByCharID(int character_id, uint32 task_id, bool enforce_level_requirement = false);
void CrossZoneAssignTaskByGroupID(int group_id, uint32 task_id, bool enforce_level_requirement = false); void CrossZoneAssignTaskByGroupID(int group_id, uint32 task_id, bool enforce_level_requirement = false);
void CrossZoneAssignTaskByRaidID(int raid_id, uint32 task_id, bool enforce_level_requirement = false); void CrossZoneAssignTaskByRaidID(int raid_id, uint32 task_id, bool enforce_level_requirement = false);