Quellcode durchsuchen

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/trunk@14436 54d463be-8e91-2dee-dedb-b68131a5f0ec
Paradox924X vor 14 Jahren
Ursprung
Commit
95c5d9c4f1
2 geänderte Dateien mit 5 neuen und 3 gelöschten Zeilen
  1. 2 0
      Changelog-Trunk.txt
  2. 3 3
      src/map/atcommand.c

+ 2 - 0
Changelog-Trunk.txt

@@ -1,5 +1,7 @@
 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
 	* Removed unused 'indoors' mapflag. [Gepard]
 2010/10/17

+ 3 - 3
src/map/atcommand.c

@@ -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)
 		new_status_point = 0;
 	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) {
 		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)
 		new_skill_point = 0;
 	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) {
 		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;
 
 	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]) {
 		*status[i] = new_value;