diff --git src/simutrans/simhalt.cc src/simutrans/simhalt.cc
index acf7479f0..f898b5c4d 100644
--- src/simutrans/simhalt.cc
+++ src/simutrans/simhalt.cc
@@ -2752,13 +2752,13 @@ void haltestelle_t::merge_halt( halthandle_t halt_merged )
 
 	assert(!halt_merged->existiert_in_welt());
 
+	// Allow everyone who could serve either halt to continue serving it
+	set_permissions(halt_merged->get_permissions() | permissions);
+
 	// transfer goods
 	halt_merged->transfer_goods(self);
 	destroy(halt_merged);
 
-	// Allow everyone who could serve either halt to continue serving it
-	set_permissions(halt_merged->get_permissions() | permissions);
-
 	recalc_basis_pos();
 
 	// also rebuild our connections
diff --git src/simutrans/simhalt.h src/simutrans/simhalt.h
index a4e28e527..20949b9b2 100644
--- src/simutrans/simhalt.h
+++ src/simutrans/simhalt.h
@@ -720,7 +720,7 @@ public:
 	 * @return true if player is allowed to stop here
 	 */
 	inline bool can_use_halt(const player_t* player) const {
-		return player  &&  (permissions & (1 << player->get_player_nr()))!=0;
+		return !player || (permissions & (1 << player->get_player_nr()))!=0;
 	}
 
 	/**
