Modified certain atcommands to use 64 bit arithmetic before capping a value to correct boundary logic for overflowing values.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/renewal@14436 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
Paradox924X 2010-11-02 01:36:14 +00:00
parent 83bc339cef
commit dcc8df7702
2 changed files with 5 additions and 3 deletions

View File

@ -1,5 +1,7 @@
Date Added Date Added
2010/11/01
* Modified certain atcommands to use 64 bit arithmetic before capping a value to correct boundary logic for overflowing values. [Paradox924X]
2010/10/21 2010/10/21
* Removed unused 'indoors' mapflag. [Gepard] * Removed unused 'indoors' mapflag. [Gepard]
2010/10/17 2010/10/17

View File

@ -2859,7 +2859,7 @@ int atcommand_statuspoint(const int fd, struct map_session_data* sd, const char*
if (point < 0 && sd->status.status_point < -point) if (point < 0 && sd->status.status_point < -point)
new_status_point = 0; new_status_point = 0;
else else
new_status_point = cap_value(sd->status.status_point + point, 0, INT_MAX); new_status_point = cap_value((int64)sd->status.status_point + point, 0, INT_MAX);
if (new_status_point != (int)sd->status.status_point) { if (new_status_point != (int)sd->status.status_point) {
sd->status.status_point = new_status_point; sd->status.status_point = new_status_point;
@ -2892,7 +2892,7 @@ int atcommand_skillpoint(const int fd, struct map_session_data* sd, const char*
if (point < 0 && sd->status.skill_point < -point) if (point < 0 && sd->status.skill_point < -point)
new_skill_point = 0; new_skill_point = 0;
else else
new_skill_point = cap_value(sd->status.skill_point + point, 0, INT_MAX); new_skill_point = cap_value((int64)sd->status.skill_point + point, 0, INT_MAX);
if (new_skill_point != (int)sd->status.skill_point) { if (new_skill_point != (int)sd->status.skill_point) {
sd->status.skill_point = new_skill_point; sd->status.skill_point = new_skill_point;
@ -2978,7 +2978,7 @@ int atcommand_param(const int fd, struct map_session_data* sd, const char* comma
status[5] = &sd->status.luk; status[5] = &sd->status.luk;
max = SHRT_MAX; max = SHRT_MAX;
new_value = cap_value(*status[i] + value, 1, max); new_value = cap_value((int64)*status[i] + value, 1, max);
if (new_value != (int)*status[i]) { if (new_value != (int)*status[i]) {
*status[i] = new_value; *status[i] = new_value;