ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/cfperl.xs
(Generate patch)

Comparing deliantra/server/server/cfperl.xs (file contents):
Revision 1.42 by root, Mon Sep 4 11:08:00 2006 UTC vs.
Revision 1.43 by root, Mon Sep 4 13:55:54 2006 UTC

633 633
634void object_thawer::get_ml (keyword kend, shstr &sh) 634void object_thawer::get_ml (keyword kend, shstr &sh)
635{ 635{
636 char kw[128]; 636 char kw[128];
637 637
638 // multi-line strings are delimited by "\nendXXX\n" 638 int klen = keyword_len [kend];
639
639 kw [0] = '\n'; 640 kw [0] = '\n';
640 strcpy (kw + 1, keyword_str [kend]); 641 memcpy (kw + 1, keyword_str [kend], klen);
642 kw [klen + 1] = '\n';
643 kw [klen + 2] = 0;
641 644
642 char *end = strstr (line, kw); 645 // first test for completely empty msg... "endXXX\n"
643 646 if (!strncmp (line, kw + 1, klen + 1))
644 if (!end)
645 { 647 {
646 sh = 0; 648 sh = 0;
649
650 line += klen + 1;
651
647 return; 652 return;
648 } 653 }
654 else
655 {
656 // multi-line strings are delimited by "\nendXXX\n" or "endXXX\n" (NULL)
649 657
658 char *end = strstr (line, kw);
659
660 if (!end)
661 {
662 sh = 0;
663 return;
664 }
665
650 *end = 0; 666 *end = 0;
651 sh = line; 667 sh = line;
652 668
653 line = end + keyword_len [kend] + 1; 669 line = end + keyword_len [kend] + 1;
654 670
655 while (*line++ != '\n') 671 while (*line++ != '\n')
672 ;
656 ; 673 }
657} 674}
658 675
659sint32 object_thawer::get_sint32 () const 676sint32 object_thawer::get_sint32 () const
660{ 677{
661 char *p = last_value; 678 char *p = last_value;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines