Browse Source

解决area中site为空造成崩溃的bug

lixioayao 6 years ago
parent
commit
d519699bda

+ 3 - 5
area.cpp

@@ -31,10 +31,7 @@ struct underground_area:area
 	}
     virtual bool in_area(const std::shared_ptr<site>&s,const std::shared_ptr<card_location_base>&c, const point & p,int &sarid)
 	{
-		bool f =false;
-        if(!s->is_up_site())
-          f=true;
-		return f;
+        return s&&!s->is_up_site();
 	}
 };
 
@@ -422,7 +419,8 @@ std::vector<std::shared_ptr<area>> area_list::get_area(const std::shared_ptr<sit
 	for(const auto &a:map)
 		if(a.second->in_area(s,c,pt,sarid))
 			ret.push_back(a.second);
-    ret.push_back(s->get_area());
+    if(s)
+        ret.push_back(s->get_area());
 	//区域覆盖不完全地图,很多车辆人行驶在地图外,如何确认.
 	return std::move(ret);
 }

+ 0 - 1
module_service/area_business_card_enter_or_leave.cpp

@@ -14,7 +14,6 @@ struct enter_or_leave_data:business_data
         m_enter_time_ms = tool_time::now_to_ms();
     }
 
-    ///考勤开始时间
     uint64_t m_enter_time_ms;
 };
 

+ 0 - 12
module_service/area_business_post_area.cpp

@@ -6,28 +6,16 @@
 /*
 	确定推送人员信息时的区域,每一个明确需要推送的区域,都要推送
 */
-struct pos_area:business_data
-{
-	pos_area(uint64_t t)
-	{
-		m_enter_time=t;
-	}
-	uint64_t m_enter_time=0;
-};
 //将推送区域信息加入人员数据
 void area_business_post_area::on_enter(const std::shared_ptr<area_hover>&a,
 						const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data>&ptr)
 {
-	//uint64_t t=tool_time::now_to_ms();
-	//ptr=std::make_shared<pos_area>(t);
 	c->set_area_info(a->mapid(),a->scale(),a->id(),a->m_enter_time,0);
 }
 
 void area_business_post_area::on_hover(const std::shared_ptr<area_hover>&a,
 						const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr)
 {
-	//std::shared_ptr<pos_area> pa = std::dynamic_pointer_cast<pos_area>(ptr);
-	//uint64_t t = pa->m_enter_time;
 	c->set_area_info(0,0,a->id(),a->m_enter_time,1);
 }
 

+ 2 - 2
websocket/jsonBuilder.cpp

@@ -5,7 +5,7 @@
 #include <rapidjson/stringbuffer.h>
 #include <rapidjson/prettywriter.h>
 #include "constdef.h"
-
+#include "log.h"
 namespace YA
 {
 	jsonBuilder::jsonBuilder()
@@ -155,7 +155,7 @@ namespace YA
 		//18 车辆当天出勤的标识
 		tmp_object.SetInt( CardPos.is_on_duty );
 		Array.PushBack( tmp_object, Allocator );
-
+        log_info("websocket..%d",CardPos.area_info.size());
 		rapidjson::Value Array_1( rapidjson::kArrayType );
 		for(const auto &a:CardPos.area_info)	
 		{

BIN
websocket/libwebsocket.a