Blob Blame History Raw
--- jd-1.8.5-beta061227/src/dbtree/nodetreebase.cpp.zero	2006-12-21 22:55:19.000000000 +0900
+++ jd-1.8.5-beta061227/src/dbtree/nodetreebase.cpp	2007-01-07 14:52:39.000000000 +0900
@@ -868,7 +868,7 @@
     if( size_in > 1 ){
         memcpy( m_buffer_lines + m_byte_buffer_lines_left , data, size_in );
         m_buffer_lines[ m_byte_buffer_lines_left + size_in ] = '\0';
-        add_raw_lines( m_buffer_lines );
+        add_raw_lines( m_buffer_lines, m_byte_buffer_lines_left + size_in );
     }
 
     // 残りの分をバッファにコピーしておく
@@ -921,8 +921,17 @@
 //
 // 鯖から生の(複数)行のデータを受け取ってdat形式に変換して add_one_dat_line() に出力
 //
-void NodeTreeBase::add_raw_lines( char* rawlines )
+void NodeTreeBase::add_raw_lines( char* rawlines, size_t size  )
 {
+    // 時々サーバ側のdatファイルが壊れていてデータ中に \0 が
+    // 入っている時があるので取り除く
+    for( size_t i = 0; i < size; ++i ){
+        if( rawlines[ i ] == '\0' ){
+            MISC::ERRMSG( "EOF was inserted in the middle of the raw data" );
+            rawlines[ i ] = ' ';
+        } 
+    }
+
     // 保存前にrawデータを加工
     rawlines = process_raw_lines( rawlines );
 
@@ -1014,6 +1023,7 @@
         std::cout << datline << std::endl;
 #endif
 
+	m_broken = true;
         createTextNode( "broken", COLOR_CHAR );
         createBrNode();
         createBrNode();
--- jd-1.8.5-beta061227/src/dbtree/nodetreebase.h.zero	2006-12-21 22:05:29.000000000 +0900
+++ jd-1.8.5-beta061227/src/dbtree/nodetreebase.h	2007-01-07 14:37:48.000000000 +0900
@@ -216,7 +216,7 @@
         NODE* createTextNodeN( const char* text, int n, int color_text, bool bold = false );
 
         // 以下、構文解析用関数
-        void add_raw_lines( char* rawines );
+        void add_raw_lines( char* rawines, size_t size );
         const char* add_one_dat_line( const char* datline );
 
         void parseName( NODE* header, const char* str, int lng );