Blob Blame History Raw
diff --git a/src/activity_item_handling.cpp b/src/activity_item_handling.cpp
index 0b59272..a7dc11e 100644
--- a/src/activity_item_handling.cpp
+++ b/src/activity_item_handling.cpp
@@ -1146,7 +1146,7 @@ static activity_reason_info find_base_construction(
 
     //we can't immediately build it, looking for pre-req
     used.insert( idx );
-    cata::optional<do_activity_reason> reason;
+    cata::optional<do_activity_reason> reason = { };
     construction_id pre_req_idx( -1 );
     //first step: try only constructions with the same description
     //second step: try all constructions
diff --git a/src/avatar.cpp b/src/avatar.cpp
index 6c17505..4d33e34 100644
--- a/src/avatar.cpp
+++ b/src/avatar.cpp
@@ -416,7 +416,7 @@ bool avatar::read( item &it, const bool continuous )
         // special guidebook effect: print a misc. hint when read
         if( reader != this ) {
             add_msg( m_info, fail_messages[0] );
-            dynamic_cast<const npc *>( reader )->say( get_hint() );
+            dynamic_cast<const npc &>( *reader ).say( get_hint() );
         } else {
             add_msg( m_info, get_hint() );
         }
diff --git a/src/avatar_action.cpp b/src/avatar_action.cpp
index 1a7149c..728e51d 100644
--- a/src/avatar_action.cpp
+++ b/src/avatar_action.cpp
@@ -595,7 +595,7 @@ void avatar_action::autoattack( avatar &you, map &m )
         if( !c->is_npc() ) {
             return false;
         }
-        return !dynamic_cast<const npc *>( c )->is_enemy();
+        return !dynamic_cast<const npc &>( *c ).is_enemy();
     } ), critters.end() );
     if( critters.empty() ) {
         add_msg( m_info, _( "No hostile creature in reach.  Waiting a turn." ) );
diff --git a/src/item.cpp b/src/item.cpp
index 635b56c..194df4d 100644
--- a/src/item.cpp
+++ b/src/item.cpp
@@ -7799,13 +7799,13 @@ units::volume item::get_total_capacity() const
     // future then this probably warrants a new method on use_function to
     // access this information generically.
     if( is_bandolier() ) {
-        result += dynamic_cast<const bandolier_actor *>
-                  ( type->get_use( "bandolier" )->get_actor_ptr() )->max_stored_volume();
+        result += dynamic_cast<const bandolier_actor &>
+                  ( *type->get_use( "bandolier" )->get_actor_ptr() ).max_stored_volume();
     }
 
     if( is_holster() ) {
-        result += dynamic_cast<const holster_actor *>
-                  ( type->get_use( "holster" )->get_actor_ptr() )->max_stored_volume();
+        result += dynamic_cast<const holster_actor &>
+                  ( *type->get_use( "holster" )->get_actor_ptr() ).max_stored_volume();
     }
 
     return result;
diff --git a/src/bionics.cpp b/src/bionics.cpp
index ea39bbd..0b2a356 100644
--- a/src/bionics.cpp
+++ b/src/bionics.cpp
@@ -1290,7 +1290,7 @@ void Character::heat_emission( int b, int fuel_energy )
         const int heat_spread = std::max( heat_prod / 10 - heat_level, 1 );
         g->m.emit_field( pos(), hotness, heat_spread );
     }
-    for( const std::pair<body_part, size_t> &bp : bio.info().occupied_bodyparts ) {
+    for( const std::pair<const body_part, size_t> &bp : bio.info().occupied_bodyparts ) {
         add_effect( effect_heating_bionic, 2_seconds, bp.first, false, heat_prod );
     }
 }
diff --git a/src/item.cpp b/src/item.cpp
index 194df4d..5918105 100644
--- a/src/item.cpp
+++ b/src/item.cpp
@@ -3185,7 +3185,7 @@ void item::final_info( std::vector<iteminfo> &info, const iteminfo_query *parts,
             info.push_back( iteminfo( "DESCRIPTION",
                                       _( "<bold>Environmental Protection:</bold> " ),
                                       iteminfo::no_newline ) );
-            for( const std::pair< body_part, size_t > &element : bid->env_protec ) {
+            for( const std::pair<const body_part, size_t > &element : bid->env_protec ) {
                 info.push_back( iteminfo( "CBM", body_part_name_as_heading( element.first, 1 ),
                                           " <num> ", iteminfo::no_newline, element.second ) );
             }
@@ -3195,7 +3195,7 @@ void item::final_info( std::vector<iteminfo> &info, const iteminfo_query *parts,
             info.push_back( iteminfo( "DESCRIPTION",
                                       _( "<bold>Bash Protection:</bold> " ),
                                       iteminfo::no_newline ) );
-            for( const std::pair< body_part, size_t > &element : bid->bash_protec ) {
+            for( const std::pair<const body_part, size_t > &element : bid->bash_protec ) {
                 info.push_back( iteminfo( "CBM", body_part_name_as_heading( element.first, 1 ),
                                           " <num> ", iteminfo::no_newline, element.second ) );
             }
@@ -3204,7 +3204,7 @@ void item::final_info( std::vector<iteminfo> &info, const iteminfo_query *parts,
             info.push_back( iteminfo( "DESCRIPTION",
                                       _( "<bold>Cut Protection:</bold> " ),
                                       iteminfo::no_newline ) );
-            for( const std::pair< body_part, size_t > &element : bid->cut_protec ) {
+            for( const std::pair<const body_part, size_t > &element : bid->cut_protec ) {
                 info.push_back( iteminfo( "CBM", body_part_name_as_heading( element.first, 1 ),
                                           " <num> ", iteminfo::no_newline, element.second ) );
             }
diff --git a/src/monster.cpp b/src/monster.cpp
index d3c4599..3d56924 100644
--- a/src/monster.cpp
+++ b/src/monster.cpp
@@ -2055,7 +2055,7 @@ void monster::process_turn()
 {
     decrement_summon_timer();
     if( !is_hallucination() ) {
-        for( const std::pair<emit_id, time_duration> &e : type->emit_fields ) {
+        for( const std::pair<const emit_id, time_duration> &e : type->emit_fields ) {
             if( !calendar::once_every( e.second ) ) {
                 continue;
             }
diff --git a/src/monstergenerator.cpp b/src/monstergenerator.cpp
index f11ba0e..8a371fa 100644
--- a/src/monstergenerator.cpp
+++ b/src/monstergenerator.cpp
@@ -1177,7 +1177,7 @@ void MonsterGenerator::check_monster_definitions() const
             }
         }
 
-        for( const std::pair<emit_id, time_duration> &e : mon.emit_fields ) {
+        for( const std::pair<const emit_id, time_duration> &e : mon.emit_fields ) {
             const emit_id emid = e.first;
             if( !emid.is_valid() ) {
                 debugmsg( "monster %s has invalid emit source %s", mon.id.c_str(), emid.c_str() );
diff --git a/src/recipe.cpp b/src/recipe.cpp
index cc7b022..a89c13d 100644
--- a/src/recipe.cpp
+++ b/src/recipe.cpp
@@ -274,7 +274,7 @@ void recipe::load( const JsonObject &jo, const std::string &src )
                     for( JsonArray cur : jneeds.get_array( "skills" ) ) {
                         skills_blueprint[skill_id( cur.get_string( 0 ) )] = cur.get_int( 1 );
                     }
-                    for( const std::pair<skill_id, int> &p : skills_blueprint ) {
+                    for( const std::pair<const skill_id, int> &p : skills_blueprint ) {
                         const auto it = required_skills.find( p.first );
                         if( it == required_skills.end() ) {
                             required_skills.emplace( p );
@@ -667,7 +667,7 @@ void recipe::check_blueprint_requirements()
 
         jsout.member( "skills" );
         jsout.start_array( /*wrap=*/!total_reqs.skills.empty() );
-        for( const std::pair<skill_id, int> &p : total_reqs.skills ) {
+        for( const std::pair<const skill_id, int> &p : total_reqs.skills ) {
             jsout.start_array();
             jsout.write( p.first );
             jsout.write( p.second );
diff --git a/tests/crafting_test.cpp b/tests/crafting_test.cpp
index 1cc0996..3ef4d8d 100644
--- a/tests/crafting_test.cpp
+++ b/tests/crafting_test.cpp
@@ -124,7 +124,7 @@ TEST_CASE( "available_recipes", "[recipes]" )
 
     GIVEN( "a recipe that can be automatically learned" ) {
         WHEN( "the player has lower skill" ) {
-            for( const std::pair<skill_id, int> &skl : r->required_skills ) {
+            for( const std::pair<const skill_id, int> &skl : r->required_skills ) {
                 dummy.set_skill_level( skl.first, skl.second - 1 );
             }
 
@@ -134,7 +134,7 @@ TEST_CASE( "available_recipes", "[recipes]" )
         }
         WHEN( "the player has just the skill that's required" ) {
             dummy.set_skill_level( r->skill_used, r->difficulty );
-            for( const std::pair<skill_id, int> &skl : r->required_skills ) {
+            for( const std::pair<const skill_id, int> &skl : r->required_skills ) {
                 dummy.set_skill_level( skl.first, skl.second );
             }
 
@@ -143,7 +143,7 @@ TEST_CASE( "available_recipes", "[recipes]" )
 
                 AND_WHEN( "his skill rusts" ) {
                     dummy.set_skill_level( r->skill_used, 0 );
-                    for( const std::pair<skill_id, int> &skl : r->required_skills ) {
+                    for( const std::pair<const skill_id, int> &skl : r->required_skills ) {
                         dummy.set_skill_level( skl.first, 0 );
                     }
 
@@ -167,7 +167,7 @@ TEST_CASE( "available_recipes", "[recipes]" )
             dummy.set_skill_level( r->skill_used, 2 );
             // Secondary skills are just set to be what the autolearn requires
             // but the primary is not
-            for( const std::pair<skill_id, int> &skl : r->required_skills ) {
+            for( const std::pair<const skill_id, int> &skl : r->required_skills ) {
                 dummy.set_skill_level( skl.first, skl.second );
             }
 
@@ -287,7 +287,7 @@ static void prep_craft( const recipe_id &rid, const std::vector<item> &tools,
     const recipe &r = rid.obj();
 
     // Ensure adequate skill for all "required" skills
-    for( const std::pair<skill_id, int> &skl : r.required_skills ) {
+    for( const std::pair<const skill_id, int> &skl : r.required_skills ) {
         g->u.set_skill_level( skl.first, skl.second );
     }
     // and just in case "used" skill difficulty is higher, set that too