From 48b4623f3eb28c2ce1baee6bcd8e811063ea1106 Mon Sep 17 00:00:00 2001 From: Lemongrass3110 Date: Tue, 4 Jun 2024 03:07:16 +0200 Subject: [PATCH] Fixed all warnings in MSVS (#8391) Fixes #2859 Fixes #3570 Fixes #8389 --- .github/workflows/build_servers_gcc.yml | 6 ++- .github/workflows/build_servers_msbuild.yml | 4 +- src/char/char_logif.cpp | 8 ++-- src/char/char_mapif.cpp | 8 ++-- src/char/int_achievement.cpp | 2 +- src/char/int_clan.cpp | 18 ++++---- src/char/int_guild.cpp | 8 ++-- src/char/int_quest.cpp | 48 +++++++++++---------- src/char/inter.cpp | 17 +++++--- src/common/grfio.cpp | 8 ++-- src/common/grfio.hpp | 3 +- src/login/account.cpp | 8 ++-- src/map/atcommand.cpp | 34 +++++++-------- src/map/battleground.cpp | 2 +- src/map/chrif.cpp | 5 ++- src/map/clif.cpp | 19 ++++---- src/map/clif.hpp | 4 +- src/map/guild.cpp | 2 +- src/map/guild.hpp | 2 +- src/map/instance.cpp | 6 ++- src/map/instance.hpp | 2 +- src/map/intif.cpp | 27 ++++++------ src/map/intif.hpp | 6 +-- src/map/map.cpp | 7 +-- src/map/mob.cpp | 6 +-- src/map/npc.cpp | 44 ++++++++++--------- src/map/npc.hpp | 2 +- src/map/party.cpp | 3 +- src/map/party.hpp | 2 +- src/map/pc.cpp | 18 +++++--- src/map/script.cpp | 28 ++++++------ src/map/skill.cpp | 5 ++- src/map/skill.hpp | 3 +- src/map/status.cpp | 2 +- src/map/unit.cpp | 8 ++-- src/tool/csv2yaml.cpp | 14 +++--- src/tool/mapcache.cpp | 2 +- 37 files changed, 205 insertions(+), 186 deletions(-) diff --git a/.github/workflows/build_servers_gcc.yml b/.github/workflows/build_servers_gcc.yml index 3727940bf1..9fde2ffac0 100644 --- a/.github/workflows/build_servers_gcc.yml +++ b/.github/workflows/build_servers_gcc.yml @@ -49,8 +49,10 @@ jobs: - name: Command - configure env: - CONFIGURE_FLAGS: 'CC=gcc-${{ matrix.gcc }} CXX=g++-${{ matrix.gcc }} --enable-buildbot=yes' - run: ./configure $CONFIGURE_FLAGS + CONFIGURE_FLAGS: 'CC=gcc-${{ matrix.gcc }} CXX=g++-${{ matrix.gcc }}' + # -Werror: to treat all warnings as errors + # -Wno-error=builtin-declaration-mismatch: otherwise ./configure checks fail + run: ./configure $CONFIGURE_FLAGS --enable-buildbot=yes CXXFLAGS='-Werror -Wno-error=builtin-declaration-mismatch' - name: Command - make clean run: make clean diff --git a/.github/workflows/build_servers_msbuild.yml b/.github/workflows/build_servers_msbuild.yml index 9330c03176..7c0f2f9d51 100644 --- a/.github/workflows/build_servers_msbuild.yml +++ b/.github/workflows/build_servers_msbuild.yml @@ -41,8 +41,8 @@ jobs: - name: Build solution in Debug if: ${{ matrix.mode == 'PRE' }} - run: msbuild rAthena.sln -t:rebuild -property:Configuration=Debug /p:DefineConstants="BUILDBOT%3BPRERE" + run: msbuild rAthena.sln -t:rebuild -property:Configuration=Debug /p:DefineConstants="BUILDBOT%3BPRERE" /warnaserror - name: Build solution in Debug if: ${{ matrix.mode == 'RE' }} - run: msbuild rAthena.sln -t:rebuild -property:Configuration=Debug /p:DefineConstants="BUILDBOT" + run: msbuild rAthena.sln -t:rebuild -property:Configuration=Debug /p:DefineConstants="BUILDBOT" /warnaserror diff --git a/src/char/char_logif.cpp b/src/char/char_logif.cpp index 1e0cf3c3b2..6448cbc6ee 100644 --- a/src/char/char_logif.cpp +++ b/src/char/char_logif.cpp @@ -96,7 +96,7 @@ void chlogif_pincode_start(int fd, struct char_session_data* sd){ TIMER_FUNC(chlogif_send_acc_tologin){ if ( chlogif_isconnected() ){ // send account list to login server - int users = char_get_onlinedb().size(); + size_t users = char_get_onlinedb().size(); int i = 0; WFIFOHEAD(login_fd,8+users*4); @@ -176,7 +176,7 @@ void chlogif_send_global_accreg(const char *key, unsigned int index, int64 int_v if (!chlogif_isconnected()) return; - int nlen = WFIFOW(login_fd, 2); + int16 nlen = WFIFOW( login_fd, 2 ); size_t len; len = strlen(key)+1; @@ -185,7 +185,7 @@ void chlogif_send_global_accreg(const char *key, unsigned int index, int64 int_v nlen += 1; safestrncpy(WFIFOCP(login_fd,nlen), key, len); - nlen += len; + nlen += static_cast( len ); WFIFOL(login_fd, nlen) = index; nlen += 4; @@ -201,7 +201,7 @@ void chlogif_send_global_accreg(const char *key, unsigned int index, int64 int_v nlen += 1; safestrncpy(WFIFOCP(login_fd,nlen), string_value, len); - nlen += len; + nlen += static_cast( len ); } } else { WFIFOB(login_fd, nlen) = int_value ? 0 : 1; diff --git a/src/char/char_mapif.cpp b/src/char/char_mapif.cpp index 5e04a87669..b10d5c2a39 100644 --- a/src/char/char_mapif.cpp +++ b/src/char/char_mapif.cpp @@ -195,7 +195,7 @@ void chmapif_send_misc(int fd) { * @param map_id * @param count Number of map from new map-server has **/ -void chmapif_send_maps(int fd, int map_id, int count, unsigned char *mapbuf) { +void chmapif_send_maps( int fd, int map_id, size_t count, unsigned char* mapbuf ){ uint16 x; if (count == 0) { @@ -205,7 +205,7 @@ void chmapif_send_maps(int fd, int map_id, int count, unsigned char *mapbuf) { unsigned char buf[INT16_MAX]; // Transmitting maps information to the other map-servers WBUFW(buf,0) = 0x2b04; - WBUFW( buf, 2 ) = count * MAP_NAME_LENGTH_EXT + 10; + WBUFW( buf, 2 ) = static_cast( count * MAP_NAME_LENGTH_EXT + 10 ); WBUFL(buf,4) = htonl(map_server[map_id].ip); WBUFW(buf,8) = htons(map_server[map_id].port); memcpy( WBUFP( buf, 10 ), mapbuf, count * MAP_NAME_LENGTH_EXT ); @@ -317,7 +317,7 @@ int chmapif_parse_askscdata(int fd){ ShowWarning("Too many status changes for %d:%d, some of them were not loaded.\n", aid, cid); if (count > 0) { - WFIFOW(fd,2) = 14 + count*sizeof(struct status_change_data); + WFIFOW( fd, 2 ) = static_cast( 14 + count * sizeof( struct status_change_data ) ); WFIFOW(fd,12) = count; WFIFOSET(fd,WFIFOW(fd,2)); } @@ -574,7 +574,7 @@ int chmapif_parse_req_skillcooldown(int fd){ ShowWarning("Too many skillcooldowns for %d:%d, some of them were not loaded.\n", aid, cid); if( count > 0 ) { - WFIFOW(fd,2) = 14 + count * sizeof(struct skill_cooldown_data); + WFIFOW( fd, 2 ) = static_cast( 14 + count * sizeof( struct skill_cooldown_data ) ); WFIFOW(fd,12) = count; WFIFOSET(fd,WFIFOW(fd,2)); //Clear the data once loaded. diff --git a/src/char/int_achievement.cpp b/src/char/int_achievement.cpp index f6d72fcc00..6d29060bc0 100644 --- a/src/char/int_achievement.cpp +++ b/src/char/int_achievement.cpp @@ -264,7 +264,7 @@ void mapif_achievement_load( int fd, uint32 char_id ){ WFIFOHEAD(fd, num_achievements * sizeof(struct achievement) + 8); WFIFOW(fd, 0) = 0x3862; - WFIFOW(fd, 2) = num_achievements * sizeof(struct achievement) + 8; + WFIFOW(fd, 2) = static_cast( num_achievements * sizeof( struct achievement ) + 8 ); WFIFOL(fd, 4) = char_id; if (num_achievements > 0) diff --git a/src/char/int_clan.cpp b/src/char/int_clan.cpp index 4359e1d23a..927cef395e 100644 --- a/src/char/int_clan.cpp +++ b/src/char/int_clan.cpp @@ -60,9 +60,12 @@ std::shared_ptr inter_clan_fromsql(int clan_id){ clan = std::make_shared(); clan->id = clan_id; - Sql_GetData(sql_handle, 0, &data, &len); memcpy(clan->name, data, min(len, NAME_LENGTH)); - Sql_GetData(sql_handle, 1, &data, &len); memcpy(clan->master, data, min(len, NAME_LENGTH)); - Sql_GetData(sql_handle, 2, &data, &len); memcpy(clan->map, data, min(len, MAP_NAME_LENGTH_EXT)); + Sql_GetData( sql_handle, 0, &data, &len ); + memcpy( clan->name, data, std::min( len, static_cast( NAME_LENGTH ) ) ); + Sql_GetData( sql_handle, 1, &data, &len ); + memcpy( clan->master, data, std::min( len, static_cast( NAME_LENGTH ) ) ); + Sql_GetData( sql_handle, 2, &data, &len ); + memcpy( clan->map, data, std::min( len, static_cast( MAP_NAME_LENGTH_EXT ) ) ); Sql_GetData(sql_handle, 3, &data, nullptr); clan->max_member = atoi(data); clan->connect_member = 0; @@ -96,16 +99,13 @@ std::shared_ptr inter_clan_fromsql(int clan_id){ } int mapif_clan_info( int fd ){ - int offset; - int length; - - length = 4 + clan_db.size() * sizeof( struct clan ); + size_t offset = 4; + size_t length = offset + clan_db.size() * sizeof( struct clan ); WFIFOHEAD( fd, length ); WFIFOW( fd, 0 ) = 0x38A0; - WFIFOW( fd, 2 ) = length; + WFIFOW( fd, 2 ) = static_cast( length ); - offset = 4; for( const auto& pair : clan_db ){ std::shared_ptr clan = pair.second; diff --git a/src/char/int_guild.cpp b/src/char/int_guild.cpp index 123ddbe580..01cce53e97 100644 --- a/src/char/int_guild.cpp +++ b/src/char/int_guild.cpp @@ -83,9 +83,11 @@ TIMER_FUNC(guild_save_timer){ if( state != 2 ) //Reached the end of the guild db without saving. last_id = 0; //Reset guild saved, return to beginning. - state = guild_db.size(); - if( state < 1 ) state = 1; //Calculate the time slot for the next save. - add_timer(tick + (charserv_config.autosave_interval)/state, guild_save_timer, 0, 0); + size_t count = std::max( guild_db.size(), static_cast( 1 ) ); + + // Calculate the time slot for the next save. + add_timer( tick + charserv_config.autosave_interval / count, guild_save_timer, 0, 0 ); + return 0; } diff --git a/src/char/int_quest.cpp b/src/char/int_quest.cpp index 912325e5f8..a63f77a463 100644 --- a/src/char/int_quest.cpp +++ b/src/char/int_quest.cpp @@ -23,18 +23,15 @@ * @return Array of found entries. It has *count entries, and it is care of the * caller to aFree() it afterwards. */ -struct quest *mapif_quests_fromsql(uint32 char_id, int *count) { +struct quest *mapif_quests_fromsql( uint32 char_id, size_t& count ){ struct quest *questlog = nullptr; struct quest tmp_quest; SqlStmt *stmt; - if( !count ) - return nullptr; - stmt = SqlStmt_Malloc(sql_handle); if( stmt == nullptr ) { SqlStmt_ShowDebug(stmt); - *count = 0; + count = 0; return nullptr; } @@ -52,23 +49,27 @@ struct quest *mapif_quests_fromsql(uint32 char_id, int *count) { ) { SqlStmt_ShowDebug(stmt); SqlStmt_Free(stmt); - *count = 0; + count = 0; return nullptr; } - *count = (int)SqlStmt_NumRows(stmt); - if( *count > 0 ) { - int i = 0; + count = static_cast::type>( SqlStmt_NumRows( stmt ) ); + if( count > 0 ) { + size_t i = 0; - questlog = (struct quest *)aCalloc(*count, sizeof(struct quest)); + questlog = (struct quest *)aCalloc( count, sizeof( struct quest ) ); while( SQL_SUCCESS == SqlStmt_NextRow(stmt) ) { - if( i >= *count ) //Sanity check, should never happen + // Sanity check, should never happen + if( i >= count ){ break; + } + memcpy(&questlog[i++], &tmp_quest, sizeof(tmp_quest)); } - if( i < *count ) { + + if( i < count ) { //Should never happen. Compact array - *count = i; + count = i; questlog = (struct quest *)aRealloc(questlog, sizeof(struct quest) * i); } } @@ -136,18 +137,21 @@ bool mapif_quest_update(uint32 char_id, struct quest qd) { * @see inter_parse_frommap */ int mapif_parse_quest_save(int fd) { - int i, j, k, old_n, new_n = (RFIFOW(fd,2) - 8) / sizeof(struct quest); uint32 char_id = RFIFOL(fd,4); struct quest *old_qd = nullptr, *new_qd = nullptr; bool success = true; + size_t old_n, new_n = ( RFIFOW( fd, 2 ) - 8 ) / sizeof( struct quest ); if( new_n > 0 ) new_qd = (struct quest*)RFIFOP(fd,8); - old_qd = mapif_quests_fromsql(char_id, &old_n); - for( i = 0; i < new_n; i++ ) { + old_qd = mapif_quests_fromsql( char_id, old_n ); + + for( size_t i = 0, j; i < new_n; i++ ) { ARR_FIND(0, old_n, j, new_qd[i].quest_id == old_qd[j].quest_id); if( j < old_n ) { //Update existing quests + size_t k; + //Only states and counts are changable. ARR_FIND(0, MAX_QUEST_OBJECTIVES, k, new_qd[i].count[k] != old_qd[j].count[k]); if( k != MAX_QUEST_OBJECTIVES || new_qd[i].state != old_qd[j].state ) @@ -162,8 +166,10 @@ int mapif_parse_quest_save(int fd) { success &= mapif_quest_add(char_id, new_qd[i]); } - for( i = 0; i < old_n; i++ ) //Quests not in new_qd but in old_qd are to be erased. + // Quests not in new_qd but in old_qd are to be erased. + for( size_t i = 0; i < old_n; i++ ){ success &= mapif_quest_delete(char_id, old_qd[i].quest_id); + } if( old_qd ) aFree(old_qd); @@ -189,14 +195,12 @@ int mapif_parse_quest_save(int fd) { */ int mapif_parse_quest_load(int fd) { uint32 char_id = RFIFOL(fd,2); - struct quest *tmp_questlog = nullptr; - int num_quests; - - tmp_questlog = mapif_quests_fromsql(char_id, &num_quests); + size_t num_quests; + struct quest* tmp_questlog = mapif_quests_fromsql( char_id, num_quests ); WFIFOHEAD(fd,num_quests * sizeof(struct quest) + 8); WFIFOW(fd,0) = 0x3860; - WFIFOW(fd,2) = num_quests * sizeof(struct quest) + 8; + WFIFOW(fd,2) = static_cast( num_quests * sizeof( struct quest ) + 8 ); WFIFOL(fd,4) = char_id; if( num_quests > 0 ) diff --git a/src/char/inter.cpp b/src/char/inter.cpp index 9777c9a451..1fe9b71d89 100644 --- a/src/char/inter.cpp +++ b/src/char/inter.cpp @@ -709,7 +709,7 @@ int inter_accreg_fromsql(uint32 account_id, uint32 char_id, int fd, int type) plen += 1; safestrncpy(WFIFOCP(fd,plen), data, len); - plen += len; + plen += static_cast( len ); Sql_GetData(sql_handle, 1, &data, nullptr); @@ -723,7 +723,7 @@ int inter_accreg_fromsql(uint32 account_id, uint32 char_id, int fd, int type) plen += 1; safestrncpy(WFIFOCP(fd,plen), data, len); - plen += len; + plen += static_cast( len ); WFIFOW(fd, 14) += 1; @@ -789,7 +789,7 @@ int inter_accreg_fromsql(uint32 account_id, uint32 char_id, int fd, int type) plen += 1; safestrncpy(WFIFOCP(fd,plen), data, len); - plen += len; + plen += static_cast( len ); Sql_GetData(sql_handle, 1, &data, nullptr); @@ -1038,11 +1038,14 @@ void inter_final(void) * @param fd **/ void inter_Storage_sendInfo(int fd) { - int size = sizeof(struct s_storage_table), len = 4 + interServerDb.size() * size, offset; + size_t offset = 4; + size_t size = sizeof( struct s_storage_table ); + size_t len = offset + interServerDb.size() * size; + // Send storage table information WFIFOHEAD(fd, len); WFIFOW(fd, 0) = 0x388c; - WFIFOW(fd, 2) = len; + WFIFOW( fd, 2 ) = static_cast( len ); offset = 4; for( auto storage : interServerDb ){ memcpy(WFIFOP(fd, offset), storage.second.get(), size); @@ -1297,7 +1300,7 @@ int mapif_parse_Registry(int fd) size_t lenkey = RFIFOB( fd, cursor ); const char* src_key= RFIFOCP(fd, cursor + 1); std::string key( src_key, lenkey ); - cursor += lenkey + 1; + cursor += static_cast( lenkey + 1 ); uint32 index = RFIFOL(fd, cursor); cursor += 4; @@ -1317,7 +1320,7 @@ int mapif_parse_Registry(int fd) size_t len_val = RFIFOB( fd, cursor ); const char* src_val= RFIFOCP(fd, cursor + 1); std::string sval( src_val, len_val ); - cursor += len_val + 1; + cursor += static_cast( len_val + 1 ); inter_savereg( account_id, char_id, key.c_str(), index, 0, sval.c_str(), true ); break; } diff --git a/src/common/grfio.cpp b/src/common/grfio.cpp index 80d84b9414..0fb252d8b4 100644 --- a/src/common/grfio.cpp +++ b/src/common/grfio.cpp @@ -385,7 +385,7 @@ static void grfio_localpath_create(char* buffer, size_t size, const char* filena /// Reads a file into a newly allocated buffer (from grf or data directory). -void* grfio_reads(const char* fname, int* size) +void* grfio_reads(const char* fname, size_t* size) { unsigned char* buf2 = nullptr; @@ -457,7 +457,7 @@ void* grfio_reads(const char* fname, int* size) } int32 grfio_read_rsw_water_level( const char* fname ){ - unsigned char* rsw = (unsigned char *)grfio_read( fname ); + unsigned char* rsw = (unsigned char *)grfio_reads( fname ); if( rsw == nullptr ){ // Error already reported in grfio_read @@ -714,7 +714,7 @@ static void grfio_resourcecheck(void) { char restable[256]; char *buf; - int size; + size_t size; FILE* fp; int i = 0; @@ -744,7 +744,7 @@ static void grfio_resourcecheck(void) buf[size] = '\0'; ptr = buf; - while( ptr - buf < size ) + while( static_cast( ptr - buf ) < size ) { if( grfio_parse_restable_row(ptr) ) ++i; diff --git a/src/common/grfio.hpp b/src/common/grfio.hpp index 548d03ff8c..31d489fe4f 100644 --- a/src/common/grfio.hpp +++ b/src/common/grfio.hpp @@ -10,9 +10,8 @@ const int32 RSW_NO_WATER = 1000000; void grfio_init(const char* fname); void grfio_final(void); -void* grfio_reads(const char* fname, int* size); +void* grfio_reads(const char* fname, size_t* size = nullptr); char* grfio_find_file(const char* fname); -#define grfio_read(fn) grfio_reads(fn, nullptr) int32 grfio_read_rsw_water_level( const char* fname ); unsigned long grfio_crc32(const unsigned char *buf, unsigned int len); diff --git a/src/login/account.cpp b/src/login/account.cpp index c10b6efab5..1b2a16d943 100644 --- a/src/login/account.cpp +++ b/src/login/account.cpp @@ -760,7 +760,7 @@ void mmo_send_global_accreg(AccountDB* self, int fd, uint32 account_id, uint32 c Sql* sql_handle = ((AccountDB_SQL*)self)->accounts; AccountDB_SQL* db = (AccountDB_SQL*)self; char* data; - int plen = 0; + int16 plen = 0; size_t len; if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `key`, `index`, `value` FROM `%s` WHERE `account_id`='%" PRIu32 "'", db->global_acc_reg_str_table, account_id) ) @@ -790,7 +790,7 @@ void mmo_send_global_accreg(AccountDB* self, int fd, uint32 account_id, uint32 c plen += 1; safestrncpy(WFIFOCP(fd,plen), data, len); - plen += len; + plen += static_cast( len ); Sql_GetData(sql_handle, 1, &data, nullptr); @@ -804,7 +804,7 @@ void mmo_send_global_accreg(AccountDB* self, int fd, uint32 account_id, uint32 c plen += 1; safestrncpy(WFIFOCP(fd,plen), data, len); - plen += len; + plen += static_cast( len ); WFIFOW(fd, 14) += 1; @@ -857,7 +857,7 @@ void mmo_send_global_accreg(AccountDB* self, int fd, uint32 account_id, uint32 c plen += 1; safestrncpy(WFIFOCP(fd,plen), data, len); - plen += len; + plen += static_cast( len ); Sql_GetData(sql_handle, 1, &data, nullptr); diff --git a/src/map/atcommand.cpp b/src/map/atcommand.cpp index 1e23bed030..9cf27e3da9 100644 --- a/src/map/atcommand.cpp +++ b/src/map/atcommand.cpp @@ -1651,7 +1651,7 @@ ACMD_FUNC(baselevelup) party_send_levelup(sd); if( level > 0 && battle_config.atcommand_levelup_events ) - npc_script_event(sd,NPCE_BASELVUP); + npc_script_event( *sd, NPCE_BASELVUP ); return 0; } @@ -1709,7 +1709,7 @@ ACMD_FUNC(joblevelup) status_calc_pc(sd, SCO_FORCE); if( level > 0 && battle_config.atcommand_levelup_events ) - npc_script_event(sd,NPCE_JOBLVUP); + npc_script_event( *sd, NPCE_JOBLVUP ); return 0; } @@ -3758,16 +3758,12 @@ ACMD_FUNC(lostskill) *------------------------------------------*/ ACMD_FUNC(spiritball) { - uint32 max_spiritballs; int number; nullpo_retr(-1, sd); - max_spiritballs = zmin(ARRAYLENGTH(sd->spirit_timer), 0x7FFF); - - if( !message || !*message || (number = atoi(message)) < 0 || number > max_spiritballs ) - { + if( !message || !*message || ( number = atoi( message ) ) < 0 || number > MAX_SPIRITBALL ){ char msg[CHAT_SIZE_MAX]; - safesnprintf(msg, sizeof(msg), msg_txt(sd,1028), max_spiritballs); // Please enter a party name (usage: @party ). + safesnprintf( msg, sizeof( msg ), msg_txt( sd, 1028 ), MAX_SPIRITBALL ); // Please enter an amount (usage: @spiritball ). clif_displaymessage(fd, msg); return -1; } @@ -6154,7 +6150,7 @@ ACMD_FUNC(clearcart) #define MAX_SKILLID_PARTIAL_RESULTS 5 #define MAX_SKILLID_PARTIAL_RESULTS_LEN 74 // "skill " (6) + "%d:" (up to 5) + "%s" (up to 30) + " (%s)" (up to 33) ACMD_FUNC(skillid) { - int skillen, i, found = 0; + int i, found = 0; char partials[MAX_SKILLID_PARTIAL_RESULTS][MAX_SKILLID_PARTIAL_RESULTS_LEN]; nullpo_retr(-1, sd); @@ -6164,7 +6160,7 @@ ACMD_FUNC(skillid) { return -1; } - skillen = strlen(message); + size_t skillen = strlen( message ); for(const auto & skill : skill_db) { uint16 skill_id = skill.second->nameid; @@ -6521,7 +6517,7 @@ ACMD_FUNC(autotrade) { } if (battle_config.at_logout_event) - npc_script_event(sd, NPCE_LOGOUT); //Logout Event + npc_script_event( *sd, NPCE_LOGOUT ); channel_pcquit(sd,0xF); //leave all chan clif_authfail_fd(sd->fd, 15); @@ -8872,7 +8868,7 @@ ACMD_FUNC(showdelay) *------------------------------------------*/ ACMD_FUNC(invite) { - unsigned int did = sd->duel_group; + size_t did = sd->duel_group; map_session_data *target_sd = nullptr; memset(atcmd_player_name, '\0', sizeof(atcmd_player_name)); @@ -8959,7 +8955,7 @@ ACMD_FUNC(duel) target_sd = map_nick2sd(atcmd_player_name,true); if(target_sd != nullptr) { - unsigned int newduel; + size_t newduel; if((newduel = duel_create(sd, 2)) != -1) { if(target_sd->duel_group > 0 || target_sd->duel_invite > 0) { clif_displaymessage(fd, msg_txt(sd,353)); // "Duel: Player already in duel." @@ -9691,8 +9687,6 @@ static void atcommand_commands_sub(map_session_data* sd, const int fd, AtCommand clif_displaymessage(fd, msg_txt(sd,273)); // "Commands available:" for (cmd = (AtCommandInfo*)dbi_first(iter); dbi_exists(iter); cmd = (AtCommandInfo*)dbi_next(iter)) { - unsigned int slen = 0; - switch( type ) { case COMMAND_CHARCOMMAND: if( cmd->char_groups[sd->group->index] == 0 ) @@ -9707,7 +9701,7 @@ static void atcommand_commands_sub(map_session_data* sd, const int fd, AtCommand } - slen = strlen(cmd->command); + size_t slen = strlen( cmd->command ); // flush the text buffer if this command won't fit into it if (slen + cur - line_buff >= CHATBOX_SIZE) { @@ -9729,7 +9723,8 @@ static void atcommand_commands_sub(map_session_data* sd, const int fd, AtCommand int i, count_bind, gm_lvl = pc_get_group_level(sd); for( i = count_bind = 0; i < atcmd_binding_count; i++ ) { if ( gm_lvl >= ( (type - 1) ? atcmd_binding[i]->level2 : atcmd_binding[i]->level ) ) { - unsigned int slen = strlen(atcmd_binding[i]->command); + size_t slen = strlen( atcmd_binding[i]->command ); + if ( count_bind == 0 ) { cur = line_buff; memset(line_buff,' ',CHATBOX_SIZE); @@ -9823,7 +9818,8 @@ ACMD_FUNC(accinfo) { */ ACMD_FUNC(set) { char reg[46], val[128], name[32]; - int toset = 0, len; + int toset = 0; + size_t len; uint32 index; bool is_str = false; int64 uid; @@ -11587,7 +11583,7 @@ bool is_atcommand(const int fd, map_session_data* sd, const char* message, int t void atcommand_db_load_groups(){ DBIterator *iter = db_iterator(atcommand_db); AtCommandInfo* cmd; - int pc_group_max = player_group_db.size(); + size_t pc_group_max = player_group_db.size(); for (cmd = (AtCommandInfo*)dbi_first(iter); dbi_exists(iter); cmd = (AtCommandInfo*)dbi_next(iter)) { cmd->at_groups = (char*)aMalloc( pc_group_max * sizeof(char) ); diff --git a/src/map/battleground.cpp b/src/map/battleground.cpp index 8bd4c29206..dbcc7e6fd7 100644 --- a/src/map/battleground.cpp +++ b/src/map/battleground.cpp @@ -612,7 +612,7 @@ int bg_team_leave(map_session_data *sd, bool quit, bool deserter) sc_start(nullptr, &sd->bl, SC_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT, 100, 1, static_cast(bg->deserter_time) * 1000); // Deserter timer } - return bgteam->members.size(); + return static_cast( bgteam->members.size() ); } return -1; diff --git a/src/map/chrif.cpp b/src/map/chrif.cpp index fd8c7e85cc..7e4e5536a8 100644 --- a/src/map/chrif.cpp +++ b/src/map/chrif.cpp @@ -1311,7 +1311,8 @@ int chrif_save_scdata(map_session_data *sd) { //parses the sc_data of the player } WFIFOW(char_fd,12) = count; - WFIFOW(char_fd,2) = 14 +count*sizeof(struct status_change_data); //Total packet size + // Total packet size + WFIFOW( char_fd, 2 ) = static_cast( 14 + count * sizeof( struct status_change_data ) ); WFIFOSET(char_fd,WFIFOW(char_fd,2)); #endif return 0; @@ -1350,7 +1351,7 @@ int chrif_skillcooldown_save(map_session_data *sd) { return 0; WFIFOW(char_fd, 12) = count; - WFIFOW(char_fd, 2) = 14 + count * sizeof (struct skill_cooldown_data); + WFIFOW( char_fd, 2 ) = static_cast( 14 + count * sizeof( struct skill_cooldown_data ) ); WFIFOSET(char_fd, WFIFOW(char_fd, 2)); return 0; diff --git a/src/map/clif.cpp b/src/map/clif.cpp index 8e1e4ee693..b8d9c4e3cc 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -9228,8 +9228,8 @@ void clif_guild_expulsionlist(map_session_data* sd) /// Guild chat message (ZC_GUILD_CHAT). /// 017f .W .?B -void clif_guild_message(const struct mmo_guild &g,uint32 account_id,const char *mes,int len) -{// TODO: account_id is not used, candidate for deletion? [Ai4rei] +void clif_guild_message( const struct mmo_guild& g, uint32 account_id, const char* mes, size_t len ){ + // TODO: account_id is not used, candidate for deletion? [Ai4rei] map_session_data *sd; uint8 buf[256]; @@ -9244,7 +9244,7 @@ void clif_guild_message(const struct mmo_guild &g,uint32 account_id,const char * } WBUFW(buf, 0) = 0x17f; - WBUFW(buf, 2) = len + 5; + WBUFW( buf, 2 ) = static_cast( len + 5 ); safestrncpy(WBUFCP(buf,4), mes, len+1); if ((sd = guild_getavailablesd(g)) != nullptr) @@ -10942,8 +10942,7 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd) map_foreachpc(clif_friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 1); if (!sd->state.autotrade) { // Don't trigger NPC event or opening vending/buyingstore will be failed - //Login Event - npc_script_event(sd, NPCE_LOGIN); + npc_script_event( *sd, NPCE_LOGIN ); } // Set facing direction before check below to update client @@ -11087,7 +11086,7 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd) // Don't trigger NPC event or opening vending/buyingstore will be failed if(!sd->state.autotrade && mapdata->getMapFlag(MF_LOADEVENT)) // Lance - npc_script_event(sd, NPCE_LOADMAP); + npc_script_event( *sd, NPCE_LOADMAP ); if (pc_checkskill(sd, SG_DEVIL) && ((sd->class_&MAPID_THIRDMASK) == MAPID_STAR_EMPEROR || pc_is_maxjoblv(sd))) clif_status_load(&sd->bl, EFST_DEVIL1, 1); //blindness [Komurka] @@ -18584,8 +18583,7 @@ void clif_font(map_session_data *sd) /// Required to start the instancing information window on Client /// This window re-appears each "refresh" of client automatically until the keep_limit reaches 0. /// S 0x2cb .61B .W -void clif_instance_create(int instance_id, int num) -{ +void clif_instance_create( int instance_id, size_t num ){ #if PACKETVER >= 20071128 map_session_data *sd = nullptr; enum send_target target = PARTY; @@ -18603,11 +18601,10 @@ void clif_instance_create(int instance_id, int num) WBUFW(buf,0) = 0x2cb; safestrncpy(WBUFCP(buf,2), db->name.c_str(), INSTANCE_NAME_LENGTH); - WBUFW(buf,63) = num; + WBUFW( buf, 63 ) = static_cast( num ); + clif_send(buf,packet_len(0x2cb),&sd->bl,target); #endif - - return; } /// To announce Instancing queue creation if no maps available diff --git a/src/map/clif.hpp b/src/map/clif.hpp index ffc5ed212a..95e4b1b4a4 100644 --- a/src/map/clif.hpp +++ b/src/map/clif.hpp @@ -1032,7 +1032,7 @@ void clif_guild_memberpositionchanged(const struct mmo_guild &g,int idx); void clif_guild_emblem(const map_session_data &sd, const struct mmo_guild &g); void clif_guild_emblem_area(struct block_list* bl); void clif_guild_notice(map_session_data* sd); -void clif_guild_message(const struct mmo_guild &g,uint32 account_id,const char *mes,int len); +void clif_guild_message( const struct mmo_guild& g, uint32 account_id, const char* mes, size_t len ); void clif_guild_reqalliance(map_session_data *sd,uint32 account_id,const char *name); void clif_guild_allianceack(map_session_data *sd,int flag); void clif_guild_delalliance(map_session_data *sd,int guild_id,int flag); @@ -1063,7 +1063,7 @@ void clif_bg_queue_lobby_notify(const char *name, map_session_data *sd); void clif_bg_queue_ack_lobby(bool result, const char *name, const char *lobbyname, map_session_data *sd); // Instancing -void clif_instance_create(int instance_id, int num); +void clif_instance_create( int instance_id, size_t num ); void clif_instance_changewait(int instance_id, int num); void clif_instance_status(int instance_id, unsigned int limit1, unsigned int limit2); void clif_instance_changestatus(int instance_id, e_instance_notify type, unsigned int limit); diff --git a/src/map/guild.cpp b/src/map/guild.cpp index eafb8b4f4e..b6ee4792e1 100644 --- a/src/map/guild.cpp +++ b/src/map/guild.cpp @@ -1387,7 +1387,7 @@ int guild_send_message(map_session_data *sd, const char *mes, size_t len) { /*==================================================== * Guild receive a message, will be displayed to whole member *---------------------------------------------------*/ -int guild_recv_message(int guild_id,uint32 account_id,const char *mes,int len) { +int guild_recv_message( int guild_id, uint32 account_id, const char *mes, size_t len ){ auto g = guild_search(guild_id); if (!g) return 0; diff --git a/src/map/guild.hpp b/src/map/guild.hpp index 3ec62f32bc..15c06feb26 100644 --- a/src/map/guild.hpp +++ b/src/map/guild.hpp @@ -91,7 +91,7 @@ int guild_change_emblem( map_session_data& sd, int len, const char* data ); int guild_change_emblem_version( map_session_data& sd, int version ); int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data); int guild_send_message(map_session_data *sd, const char *mes, size_t len); -int guild_recv_message(int guild_id,uint32 account_id,const char *mes,int len); +int guild_recv_message( int guild_id, uint32 account_id, const char *mes, size_t len ); int guild_send_dot_remove(map_session_data *sd); int guild_skillupack(int guild_id,uint16 skill_id,uint32 account_id); int guild_break(map_session_data *sd,char *name); diff --git a/src/map/instance.cpp b/src/map/instance.cpp index d75a6abb65..c7ca886d17 100644 --- a/src/map/instance.cpp +++ b/src/map/instance.cpp @@ -351,7 +351,9 @@ static TIMER_FUNC(instance_subscription_timer){ std::shared_ptr gd; struct clan *cd; e_instance_mode mode = idata->mode; - int ret = instance_addmap(instance_id); // Check that maps have been added + + // Check that maps have been added + size_t ret = instance_addmap( instance_id ); switch(mode) { case IM_NONE: @@ -710,7 +712,7 @@ int instance_create(int owner_id, const char *name, e_instance_mode mode) { * @param instance_id: Instance ID to add map to * @return 0 on failure or map count on success */ -int instance_addmap(int instance_id) { +size_t instance_addmap( int instance_id ){ if (instance_id <= 0) return 0; diff --git a/src/map/instance.hpp b/src/map/instance.hpp index 9fd0ab35d6..6499767cfe 100644 --- a/src/map/instance.hpp +++ b/src/map/instance.hpp @@ -128,7 +128,7 @@ bool instance_addusers(int instance_id); bool instance_delusers(int instance_id); void instance_generate_mapname(int map_id, int instance_id, char outname[MAP_NAME_LENGTH]); int16 instance_mapid(int16 m, int instance_id); -int instance_addmap(int instance_id); +size_t instance_addmap( int instance_id ); void instance_addnpc(std::shared_ptr idata); diff --git a/src/map/intif.cpp b/src/map/intif.cpp index 2b50150e08..a343d59108 100644 --- a/src/map/intif.cpp +++ b/src/map/intif.cpp @@ -204,8 +204,7 @@ int intif_rename(map_session_data *sd, int type, char *name) * @param type : Color of msg * @return 0=error occured, 1=msg sent */ -int intif_broadcast(const char* mes, int len, int type) -{ +int intif_broadcast( const char* mes, size_t len, int type ){ nullpo_ret(mes); if (len < 2) return 0; @@ -223,7 +222,7 @@ int intif_broadcast(const char* mes, int len, int type) WFIFOHEAD(inter_fd, 16 + lp + len); WFIFOW(inter_fd,0) = 0x3000; - WFIFOW(inter_fd,2) = 16 + lp + len; + WFIFOW( inter_fd, 2 ) = static_cast( 16 + lp + len ); WFIFOL(inter_fd,4) = 0xFF000000; // 0xFF000000 color signals standard broadcast WFIFOW(inter_fd,8) = 0; // fontType not used with standard broadcast WFIFOW(inter_fd,10) = 0; // fontSize not used with standard broadcast @@ -249,8 +248,7 @@ int intif_broadcast(const char* mes, int len, int type) * @param fontY : * @return 0=not send to char-serv, 1=send to char-serv */ -int intif_broadcast2(const char* mes, int len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY) -{ +int intif_broadcast2( const char* mes, size_t len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY ){ nullpo_ret(mes); if (len < 2) return 0; @@ -266,7 +264,7 @@ int intif_broadcast2(const char* mes, int len, unsigned long fontColor, short fo WFIFOHEAD(inter_fd, 16 + len); WFIFOW(inter_fd,0) = 0x3000; - WFIFOW(inter_fd,2) = 16 + len; + WFIFOW( inter_fd, 2 ) = static_cast( 16 + len ); WFIFOL(inter_fd,4) = fontColor; WFIFOW(inter_fd,8) = fontType; WFIFOW(inter_fd,10) = fontSize; @@ -370,13 +368,15 @@ int intif_wis_reply(int id, int flag) */ int intif_wis_message_to_gm(char *wisp_name, int permission, char *mes) { - int mes_len; if (CheckForCharServer()) return 0; - mes_len = strlen(mes) + 1; // + null + + // + null + size_t mes_len = strlen( mes ) + 1; + WFIFOHEAD(inter_fd, mes_len + 8 + NAME_LENGTH); WFIFOW(inter_fd,0) = 0x3003; - WFIFOW(inter_fd,2) = mes_len + 32; + WFIFOW( inter_fd, 2 ) = static_cast( mes_len + 32 ); safestrncpy(WFIFOCP(inter_fd,4), wisp_name, NAME_LENGTH); WFIFOL(inter_fd,4+NAME_LENGTH) = permission; safestrncpy(WFIFOCP(inter_fd,8+NAME_LENGTH), mes, mes_len); @@ -444,7 +444,7 @@ int intif_saveregistry(map_session_data *sd) plen += 1; safestrncpy(WFIFOCP(inter_fd,plen), varname, len); //the key - plen += len; + plen += static_cast( len ); WFIFOL(inter_fd, plen) = script_getvaridx(key.i64); plen += 4; @@ -468,7 +468,7 @@ int intif_saveregistry(map_session_data *sd) plen += 1; safestrncpy(WFIFOCP(inter_fd,plen), p->value, len); - plen += len; + plen += static_cast( len ); } else { script_reg_destroy_single(sd,key.i64,&p->flag); } @@ -866,13 +866,12 @@ int intif_guild_addmember(int guild_id,struct guild_member *m) * @param len : size of the name * @return 0=error, 1=msg_sent */ -int intif_guild_change_gm(int guild_id, const char* name, int len) -{ +int intif_guild_change_gm( int guild_id, const char* name, size_t len ){ if (CheckForCharServer()) return 0; WFIFOHEAD(inter_fd, len + 8); WFIFOW(inter_fd, 0)=0x3033; - WFIFOW(inter_fd, 2)=len+8; + WFIFOW( inter_fd, 2 ) = static_cast( len + 8 ); WFIFOL(inter_fd, 4)=guild_id; safestrncpy(WFIFOCP(inter_fd,8),name,len); WFIFOSET(inter_fd,len+8); diff --git a/src/map/intif.hpp b/src/map/intif.hpp index 381780a03d..21a7dcc24f 100644 --- a/src/map/intif.hpp +++ b/src/map/intif.hpp @@ -23,8 +23,8 @@ class map_session_data; int intif_parse(int fd); -int intif_broadcast(const char* mes, int len, int type); -int intif_broadcast2(const char* mes, int len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY); +int intif_broadcast( const char* mes, size_t len, int type ); +int intif_broadcast2( const char* mes, size_t len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY ); int intif_broadcast_obtain_special_item(map_session_data *sd, t_itemid nameid, unsigned int sourceid, unsigned char type); int intif_broadcast_obtain_special_item_npc(map_session_data *sd, t_itemid nameid); int intif_main_message(map_session_data* sd, const char* message); @@ -57,7 +57,7 @@ int intif_guild_leave(int guild_id, uint32 account_id, uint32 char_id, int flag, int intif_guild_memberinfoshort(int guild_id, uint32 account_id, uint32 char_id, int online, int lv, int class_); int intif_guild_break(int guild_id); int intif_guild_message(int guild_id, uint32 account_id, const char *mes, size_t len); -int intif_guild_change_gm(int guild_id, const char* name, int len); +int intif_guild_change_gm( int guild_id, const char* name, size_t len ); int intif_guild_change_basicinfo(int guild_id, int type, const void *data, int len); int intif_guild_change_memberinfo(int guild_id, uint32 account_id, uint32 char_id, int type, const void *data, int len); int intif_guild_position(int guild_id, int idx, struct guild_position *p); diff --git a/src/map/map.cpp b/src/map/map.cpp index 34789adbbe..7ddaf3322a 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -2098,7 +2098,7 @@ int map_quit(map_session_data *sd) { pc_itemcd_do(sd,false); - npc_script_event(sd, NPCE_LOGOUT); + npc_script_event( *sd, NPCE_LOGOUT ); //Unit_free handles clearing the player related data, //map_quit handles extra specific data which is related to quitting normally @@ -3699,7 +3699,7 @@ int map_readgat (struct map_data* m) sprintf(filename, "data\\%s.gat", m->name); - gat = (uint8 *) grfio_read(filename); + gat = (uint8 *) grfio_reads(filename); if (gat == nullptr) return 0; @@ -4490,7 +4490,8 @@ enum e_mapflag map_getmapflag_by_name(char* name) bool map_getmapflag_name( enum e_mapflag mapflag, char* output ){ const char* constant; const char* prefix = "mf_"; - int i, len = strlen(prefix); + size_t i; + size_t len = strlen( prefix ); // Look it up constant = script_get_constant_str( prefix, mapflag ); diff --git a/src/map/mob.cpp b/src/map/mob.cpp index ac2ceb9b10..091b2e6408 100644 --- a/src/map/mob.cpp +++ b/src/map/mob.cpp @@ -3200,7 +3200,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) } else if( mvp_sd && !md->state.npc_killmonster ) { pc_setparam(mvp_sd, SP_KILLEDGID, md->bl.id); pc_setparam(mvp_sd, SP_KILLEDRID, md->mob_id); - npc_script_event(mvp_sd, NPCE_KILLNPC); // PCKillNPC [Lance] + npc_script_event( *mvp_sd, NPCE_KILLNPC ); } } @@ -6665,8 +6665,8 @@ static void mob_load(void) mob_chat_db.load(); // load before mob_skill_db for(int i = 0; i < ARRAYLENGTH(dbsubpath); i++){ - int n1 = strlen(db_path)+strlen(dbsubpath[i])+1; - int n2 = strlen(db_path)+strlen(DBPATH)+strlen(dbsubpath[i])+1; + size_t n1 = strlen( db_path ) + strlen( dbsubpath[i] ) + 1; + size_t n2 = strlen( db_path ) + strlen( DBPATH ) + strlen( dbsubpath[i] ) + 1; char* dbsubpath1 = (char*)aMalloc(n1+1); char* dbsubpath2 = (char*)aMalloc(n2+1); diff --git a/src/map/npc.cpp b/src/map/npc.cpp index a9c3367e54..d59b9e312c 100644 --- a/src/map/npc.cpp +++ b/src/map/npc.cpp @@ -4245,7 +4245,6 @@ int npc_convertlabel_db(DBKey key, DBData *data, va_list ap) const char* filepath; struct npc_label_list* label; const char *p; - int len; nullpo_ret(label_list = va_arg(ap,struct npc_label_list**)); nullpo_ret(label_list_num = va_arg(ap,int*)); @@ -4255,7 +4254,8 @@ int npc_convertlabel_db(DBKey key, DBData *data, va_list ap) p = lname; while( ISALNUM(*p) || *p == '_' ) ++p; - len = p-lname; + + size_t len = p - lname; // here we check if the label fit into the buffer if( len > NAME_LENGTH ) @@ -5654,28 +5654,34 @@ int npc_parsesrcfile(const char* filepath) // fill w1 if( pos[3]-pos[2] > ARRAYLENGTH(w1)-1 ) ShowWarning("npc_parsesrcfile: w1 truncated, too much data (%d) in file '%s', line '%d'.\n", pos[3]-pos[2], filepath, strline(buffer,p-buffer)); - int i = min(pos[3]-pos[2], ARRAYLENGTH(w1)-1); - memcpy(w1, p+pos[2], i*sizeof(char)); - w1[i] = '\0'; + + size_t index = std::min( pos[3] - pos[2], ARRAYLENGTH( w1 ) - 1 ); + memcpy( w1, p + pos[2], index * sizeof( char ) ); + w1[index] = '\0'; + // fill w2 if( pos[5]-pos[4] > ARRAYLENGTH(w2)-1 ) ShowWarning("npc_parsesrcfile: w2 truncated, too much data (%d) in file '%s', line '%d'.\n", pos[5]-pos[4], filepath, strline(buffer,p-buffer)); - i = min(pos[5]-pos[4], ARRAYLENGTH(w2)-1); - memcpy(w2, p+pos[4], i*sizeof(char)); - w2[i] = '\0'; + + index = std::min( pos[5] - pos[4], ARRAYLENGTH( w2 ) - 1 ); + memcpy( w2, p + pos[4], index * sizeof( char ) ); + w2[index] = '\0'; + // fill w3 if( pos[7]-pos[6] > ARRAYLENGTH(w3)-1 ) ShowWarning("npc_parsesrcfile: w3 truncated, too much data (%d) in file '%s', line '%d'.\n", pos[7]-pos[6], filepath, strline(buffer,p-buffer)); - i = min(pos[7]-pos[6], ARRAYLENGTH(w3)-1); - memcpy(w3, p+pos[6], i*sizeof(char)); - w3[i] = '\0'; + + index = std::min( pos[7] - pos[6], ARRAYLENGTH( w3 ) - 1 ); + memcpy( w3, p + pos[6], index * sizeof( char ) ); + w3[index] = '\0'; + // fill w4 (to end of line) if( pos[1]-pos[8] > ARRAYLENGTH(w4)-1 ) ShowWarning("npc_parsesrcfile: w4 truncated, too much data (%d) in file '%s', line '%d'.\n", pos[1]-pos[8], filepath, strline(buffer,p-buffer)); if (pos[8] != -1) { - i = min(pos[1]-pos[8], ARRAYLENGTH(w4)-1); - memcpy(w4, p+pos[8], i*sizeof(char)); - w4[i] = '\0'; + index = std::min( pos[1] - pos[8], ARRAYLENGTH( w4 ) - 1 ); + memcpy( w4, p + pos[8], index * sizeof( char ) ); + w4[index] = '\0'; } else w4[0] = '\0'; @@ -5751,7 +5757,7 @@ int npc_parsesrcfile(const char* filepath) else p = npc_parse_script(w1,w2,w3,w4, p, buffer, filepath); } - else if( (i=0, sscanf(w2,"duplicate%n",&i), (i > 0 && w2[i] == '(')) && count > 3 ) + else if( int i = 0; ( sscanf( w2, "duplicate%n", &i ), ( i > 0 && w2[i] == '(' ) ) && count > 3 ) p = npc_parse_duplicate(w1,w2,w3,w4, p, buffer, filepath); else if( (strcmpi(w2,"monster") == 0 || strcmpi(w2,"boss_monster") == 0) && count > 3 ) p = npc_parse_mob(w1, w2, w3, w4, p, buffer, filepath); @@ -5767,18 +5773,14 @@ int npc_parsesrcfile(const char* filepath) return 1; } -int npc_script_event(map_session_data* sd, enum npce_event type){ +size_t npc_script_event( map_session_data& sd, enum npce_event type ){ if (type == NPCE_MAX) return 0; - if (!sd) { - ShowError("npc_script_event: nullptr sd. Event Type %d\n", type); - return 0; - } std::vector& vector = script_event[type]; for( struct script_event_s& evt : vector ){ - npc_event_sub( sd, evt.event, evt.event_name ); + npc_event_sub( &sd, evt.event, evt.event_name ); } return vector.size(); diff --git a/src/map/npc.hpp b/src/map/npc.hpp index 737f2a0c48..408a5612c9 100644 --- a/src/map/npc.hpp +++ b/src/map/npc.hpp @@ -1630,7 +1630,7 @@ void npc_unload_duplicates (struct npc_data* nd); int npc_unload(struct npc_data* nd, bool single); int npc_reload(void); void npc_read_event_script(void); -int npc_script_event(map_session_data* sd, enum npce_event type); +size_t npc_script_event( map_session_data& sd, enum npce_event type ); int npc_duplicate4instance(struct npc_data *snd, int16 m); int npc_instanceinit(struct npc_data* nd); diff --git a/src/map/party.cpp b/src/map/party.cpp index 2cff214cc8..f958e8585d 100644 --- a/src/map/party.cpp +++ b/src/map/party.cpp @@ -1052,8 +1052,7 @@ int party_send_message(map_session_data *sd,const char *mes, size_t len) return 0; } -int party_recv_message(int party_id,uint32 account_id,const char *mes,int len) -{ +int party_recv_message( int party_id, uint32 account_id, const char *mes, size_t len ){ struct party_data *p; if( (p=party_search(party_id))==nullptr) return 0; diff --git a/src/map/party.hpp b/src/map/party.hpp index 473a47e384..c3faf48649 100644 --- a/src/map/party.hpp +++ b/src/map/party.hpp @@ -89,7 +89,7 @@ void party_send_movemap(map_session_data *sd); void party_send_levelup(map_session_data *sd); int party_send_logout(map_session_data *sd); int party_send_message(map_session_data *sd,const char *mes, size_t len); -int party_recv_message(int party_id,uint32 account_id,const char *mes,int len); +int party_recv_message( int party_id, uint32 account_id, const char *mes, size_t len ); int party_skill_check(map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv); int party_send_xy_clear(struct party_data *p); void party_exp_share(struct party_data *p,struct block_list *src,t_exp base_exp,t_exp job_exp,int zeny); diff --git a/src/map/pc.cpp b/src/map/pc.cpp index 7def238868..46f28535cf 100755 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -6904,7 +6904,8 @@ enum e_setpos pc_setpos(map_session_data* sd, unsigned short mapindex, int x, in if (sd->state.buyingstore) // Stop buyingstore buyingstore_close(sd); - npc_script_event(sd, NPCE_LOGOUT); + npc_script_event( *sd, NPCE_LOGOUT ); + //remove from map, THEN change x/y coordinates unit_remove_map_pc(sd,clrtype); sd->mapindex = mapindex; @@ -8122,7 +8123,7 @@ int pc_checkbaselevelup(map_session_data *sd) { } } clif_misceffect( sd->bl, NOTIFYEFFECT_BASE_LEVEL_UP ); - npc_script_event(sd, NPCE_BASELVUP); //LORDALFA - LVLUPEVENT + npc_script_event( *sd, NPCE_BASELVUP ); if(sd->status.party_id) party_send_levelup(sd); @@ -8180,7 +8181,8 @@ int pc_checkjoblevelup(map_session_data *sd) if (pc_checkskill(sd, SG_DEVIL) && ((sd->class_&MAPID_THIRDMASK) == MAPID_STAR_EMPEROR || pc_is_maxjoblv(sd)) ) clif_status_change(&sd->bl, EFST_DEVIL1, 1, 0, 0, 0, 1); //Permanent blind effect from SG_DEVIL. - npc_script_event(sd, NPCE_JOBLVUP); + npc_script_event( *sd, NPCE_JOBLVUP ); + for (; job_level <= sd->status.job_level; job_level++) achievement_update_objective(sd, AG_GOAL_LEVEL, 1, job_level); @@ -9540,8 +9542,12 @@ void pc_damage(map_session_data *sd,struct block_list *src,unsigned int hp, unsi } TIMER_FUNC(pc_close_npc_timer){ - TBL_PC *sd = map_id2sd(id); - if(sd) pc_close_npc(sd,data); + map_session_data* sd = map_id2sd( id ); + + if( sd != nullptr ){ + pc_close_npc( sd, static_cast( data ) ); + } + return 0; } /** @@ -9768,7 +9774,7 @@ int pc_dead(map_session_data *sd,struct block_list *src) if (src && src->type == BL_PC) { map_session_data *ssd = (map_session_data *)src; pc_setparam(ssd, SP_KILLEDRID, sd->bl.id); - npc_script_event(ssd, NPCE_KILLPC); + npc_script_event( *ssd, NPCE_KILLPC ); if (battle_config.pk_mode&2) { ssd->status.manner -= 5; diff --git a/src/map/script.cpp b/src/map/script.cpp index 018486bc8c..ef795f8a49 100644 --- a/src/map/script.cpp +++ b/src/map/script.cpp @@ -932,11 +932,11 @@ static const char* skip_word(const char* p) static int add_word(const char* p) { char* word; - int len; int i; // Check for a word - len = skip_word(p) - p; + size_t len = skip_word( p ) - p; + if( len == 0 ) disp_error_message("script:add_word: invalid word. A word consists of undercores and/or alphanumeric characters, and valid variable prefixes/postfixes.", p); @@ -16870,7 +16870,7 @@ BUILDIN_FUNC(insertchar) { const char *str = script_getstr(st,2); const char *c = script_getstr(st,3); - int index = script_getnum(st,4); + size_t index = script_getnum( st, 4 ); char *output; size_t len = strlen(str); @@ -17130,7 +17130,8 @@ BUILDIN_FUNC(implode) //------------------------------------------------------- BUILDIN_FUNC(sprintf) { - unsigned int len, argc = 0, arg = 0, buf2_len = 0; + unsigned int argc = 0, arg = 0; + size_t buf2_len = 0; const char* format; char* p; char* q; @@ -17142,7 +17143,7 @@ BUILDIN_FUNC(sprintf) // Fetch init data format = script_getstr(st, 2); argc = script_lastdata(st)-2; - len = strlen(format); + size_t len = strlen( format ); // Skip parsing, where no parsing is required. if(len == 0) { @@ -17271,7 +17272,7 @@ BUILDIN_FUNC(sprintf) // Implements C sscanf. //------------------------------------------------------- BUILDIN_FUNC(sscanf){ - unsigned int argc, arg = 0, len; + unsigned int argc, arg = 0; struct script_data* data; map_session_data* sd = nullptr; const char* str; @@ -17288,7 +17289,7 @@ BUILDIN_FUNC(sscanf){ format = script_getstr(st, 3); argc = script_lastdata(st)-3; - len = strlen(format); + size_t len = strlen(format); if (len != 0 && strlen(str) == 0) { @@ -17439,7 +17440,7 @@ BUILDIN_FUNC(replacestr) int count = 0; int numFinds = 0; - int i = 0, f = 0; + size_t i = 0, f = 0; if(findlen == 0) { ShowError("script:replacestr: Invalid search length.\n"); @@ -17520,7 +17521,6 @@ BUILDIN_FUNC(countstr) bool usecase = true; int numFinds = 0; - int i = 0, f = 0; if(findlen == 0) { ShowError("script:countstr: Invalid search length.\n"); @@ -17538,8 +17538,8 @@ BUILDIN_FUNC(countstr) } } - for(; i < inputlen; i++) { - for(f = 0; f <= findlen; f++) { + for( size_t i = 0; i < inputlen; i++ ){ + for( size_t f = 0; f <= findlen; f++ ){ if(f == findlen) { //complete match numFinds++; i += findlen - 1; @@ -21356,8 +21356,10 @@ BUILDIN_FUNC(bg_info) case BG_INFO_MAPS: { size_t i; - for (i = 0; i < bg->maps.size(); i++) - setd_sub_str(st, nullptr, ".@bgmaps$", i, mapindex_id2name(bg->maps[i].mapindex), nullptr); + for( i = 0; i < bg->maps.size(); i++ ){ + setd_sub_str( st, nullptr, ".@bgmaps$", static_cast( i ), mapindex_id2name( bg->maps[i].mapindex ), nullptr ); + } + setd_sub_num(st, nullptr, ".@bgmapscount", 0, i, nullptr); script_pushint(st, i); break; diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 4e8be5ca64..186f9b09cf 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -216,7 +216,7 @@ int skill_get_weapontype( uint16 skill_id ) { skill_get(s int skill_get_ammotype( uint16 skill_id ) { skill_get(skill_id, skill_db.find(skill_id)->require.ammo); } int skill_get_ammo_qty( uint16 skill_id, uint16 skill_lv ) { skill_get_lv(skill_id, skill_lv, skill_db.find(skill_id)->require.ammo_qty); } int skill_get_state( uint16 skill_id ) { skill_get(skill_id, skill_db.find(skill_id)->require.state); } -int skill_get_status_count( uint16 skill_id ) { skill_get(skill_id, skill_db.find(skill_id)->require.status.size()); } +size_t skill_get_status_count( uint16 skill_id ) { skill_get(skill_id, skill_db.find(skill_id)->require.status.size()); } int skill_get_spiritball( uint16 skill_id, uint16 skill_lv ) { skill_get_lv(skill_id, skill_lv, skill_db.find(skill_id)->require.spiritball); } sc_type skill_get_sc(int16 skill_id) { if (!skill_check(skill_id)) return SC_NONE; return skill_db.find(skill_id)->sc; } @@ -7545,7 +7545,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; } else { - int abra_skill_id = 0, abra_skill_lv, checked = 0, checked_max = abra_db.size() * 3; + int abra_skill_id = 0, abra_skill_lv; + size_t checked = 0, checked_max = abra_db.size() * 3; do { auto abra_spell = abra_db.random(); diff --git a/src/map/skill.hpp b/src/map/skill.hpp index 424a049cf0..e485ce8b12 100644 --- a/src/map/skill.hpp +++ b/src/map/skill.hpp @@ -534,7 +534,6 @@ int skill_get_hp( uint16 skill_id ,uint16 skill_lv ); int skill_get_mhp( uint16 skill_id ,uint16 skill_lv ); int skill_get_sp( uint16 skill_id ,uint16 skill_lv ); int skill_get_ap( uint16 skill_id, uint16 skill_lv ); -int skill_get_status_count( uint16 skill_id ); int skill_get_hp_rate( uint16 skill_id, uint16 skill_lv ); int skill_get_sp_rate( uint16 skill_id, uint16 skill_lv ); int skill_get_ap_rate( uint16 skill_id, uint16 skill_lv ); @@ -543,7 +542,7 @@ int skill_get_weapontype( uint16 skill_id ); int skill_get_ammotype( uint16 skill_id ); int skill_get_ammo_qty( uint16 skill_id, uint16 skill_lv ); int skill_get_state(uint16 skill_id); -int skill_get_status_count( uint16 skill_id ); +size_t skill_get_status_count( uint16 skill_id ); int skill_get_spiritball( uint16 skill_id, uint16 skill_lv ); unsigned short skill_dummy2skill_id(unsigned short skill_id); diff --git a/src/map/status.cpp b/src/map/status.cpp index 4417682578..81fd8783e6 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -1682,7 +1682,7 @@ int status_damage(struct block_list *src,struct block_list *target,int64 dhp, in npc_event(sd, bg->die_event.c_str(), 0); } - npc_script_event(sd,NPCE_DIE); + npc_script_event( *sd, NPCE_DIE ); } return (int)(hp+sp+ap); diff --git a/src/map/unit.cpp b/src/map/unit.cpp index 8fcb48c835..70e169dbc2 100644 --- a/src/map/unit.cpp +++ b/src/map/unit.cpp @@ -211,8 +211,9 @@ TIMER_FUNC(unit_teleport_timer){ else if(*mast_tid != tid || bl == nullptr) return 0; else { - TBL_PC *msd = unit_get_master(bl); - if(msd && !check_distance_bl(&msd->bl, bl, data)) { + map_session_data* msd = unit_get_master( bl ); + + if( msd != nullptr && !check_distance_bl( &msd->bl, bl, static_cast( data ) ) ){ *mast_tid = INVALID_TIMER; unit_warp(bl, msd->bl.m, msd->bl.x, msd->bl.y, CLR_TELEPORT ); } else // No timer needed @@ -706,7 +707,8 @@ TIMER_FUNC(unit_delay_walktoxy_timer){ * @return 1: Success 0: Fail (No valid bl or target) */ TIMER_FUNC(unit_delay_walktobl_timer){ - struct block_list *bl = map_id2bl(id), *tbl = map_id2bl(data); + block_list* bl = map_id2bl( id ); + block_list* tbl = map_id2bl( static_cast( data ) ); if(!bl || bl->prev == nullptr || tbl == nullptr) return 0; diff --git a/src/tool/csv2yaml.cpp b/src/tool/csv2yaml.cpp index 26f83a8892..129d02c887 100644 --- a/src/tool/csv2yaml.cpp +++ b/src/tool/csv2yaml.cpp @@ -2331,7 +2331,7 @@ static bool quest_read_db( char *split[], size_t columns, size_t current ){ std::string title = split[17]; if (columns > 18) { // If the title has a comma in it, concatenate - int col = 18; + size_t col = 18; while (col < columns) { title += ',' + std::string(split[col]); @@ -2472,7 +2472,7 @@ static bool instance_readdb_sub( char* str[], size_t columns, size_t current ){ body << YAML::Key << "AdditionalMaps"; body << YAML::BeginMap; - for (int i = 7; i < columns; i++) { + for( size_t i = 7; i < columns; i++ ){ if (!strlen(str[i])) continue; @@ -3110,7 +3110,8 @@ static bool itemdb_read_randomopt_group( char* str[], size_t columns, size_t cur if (group == nullptr) group_entry.rate.push_back((uint16)strtoul(str[1], nullptr, 10)); - for (int j = 0, k = 2; k < columns && j < MAX_ITEM_RDM_OPT; k += 3) { + uint16 j = 0; + for( size_t k = 2; k < columns && j < MAX_ITEM_RDM_OPT; k += 3 ){ int32 randid_tmp = -1; for (const auto &opt : rand_opt_db) { @@ -3876,7 +3877,7 @@ static bool skill_parse_row_createarrowdb( char* split[], size_t columns, size_t std::map item_created; - for (uint16 x = 1; x+1 < columns && split[x] && split[x+1]; x += 2) { + for( size_t x = 1; x + 1 < columns && split[x] && split[x + 1]; x += 2 ){ nameid = static_cast(strtoul(split[x], nullptr, 10)); std::string* item_name = util::umap_find(aegis_itemnames, nameid); @@ -4132,7 +4133,7 @@ static bool mob_readdb_itemratio( char* str[], size_t columns, size_t current ){ if (columns-2 > 0) { body << YAML::Key << "List"; body << YAML::BeginMap; - for (int i = 0; i < columns-2; i++) { + for( size_t i = 0; i < columns - 2; i++ ){ uint16 mob_id = static_cast(strtoul(str[i+2], nullptr, 10)); std::string* mob_name = util::umap_find( aegis_mobnames, mob_id ); @@ -4251,8 +4252,9 @@ static bool pc_readdb_job2( char* fields[], size_t columns, size_t current ){ stats.resize(MAX_LEVEL); std::fill(stats.begin(), stats.end(), 0); // Fill with 0 so we don't produce arbitrary stats - for (int i = 1; i < columns; i++) + for( size_t i = 1; i < columns; i++ ){ stats[i - 1] = atoi(fields[i]); + } job_db2.insert({ atoi(fields[0]), stats }); return true; diff --git a/src/tool/mapcache.cpp b/src/tool/mapcache.cpp index 5da35b4b28..42cba6520b 100644 --- a/src/tool/mapcache.cpp +++ b/src/tool/mapcache.cpp @@ -76,7 +76,7 @@ int read_map(char *name, struct map_data *m) // Open map GAT sprintf(filename,"data\\%s.gat", name); - gat = (unsigned char *)grfio_read(filename); + gat = (unsigned char *)grfio_reads(filename); if (gat == nullptr) return 0;