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.337 by root, Thu Nov 12 01:11:52 2009 UTC vs.
Revision 1.338 by root, Sun Nov 15 18:03:59 2009 UTC

470 470
471 if (!SvROK (sv) 471 if (!SvROK (sv)
472 || (SvSTASH (SvRV (sv)) != stash_cf_player_wrap 472 || (SvSTASH (SvRV (sv)) != stash_cf_player_wrap
473 && !sv_derived_from (sv, "cf::player"))) 473 && !sv_derived_from (sv, "cf::player")))
474 croak ("object of type cf::player expected"); 474 croak ("object of type cf::player expected");
475
476 if (SvSTASH (SvRV (sv)) != stash_cf_player_wrap)
477 printf ("unexpected stash %s:%s\n", HvNAME(SvSTASH(SvRV(sv))));//D
478
479 475
480 return SvPTR_nc (sv); 476 return SvPTR_nc (sv);
481} 477}
482 478
483static inline SV *to_sv (const shstr & v) { return newSVpvn_utf8 ((const char *)v, v.length (), 1); } 479static inline SV *to_sv (const shstr & v) { return newSVpvn_utf8 ((const char *)v, v.length (), 1); }
3008 faceinfo *f = face_info (idx); assert (f); 3004 faceinfo *f = face_info (idx); assert (f);
3009 facedata *d = &(faceset ? f->data64 : f->data32); 3005 facedata *d = &(faceset ? f->data64 : f->data32);
3010 sv_to (data, d->data); 3006 sv_to (data, d->data);
3011 STRLEN clen; 3007 STRLEN clen;
3012 char *cdata = SvPVbyte (chksum, clen); 3008 char *cdata = SvPVbyte (chksum, clen);
3013 clen = min (CHKSUM_SIZE, clen); 3009 clen = min (CHKSUM_MAXLEN, clen);
3014 3010
3015 if (memcmp (d->chksum, cdata, clen)) 3011 if (clen != d->chksum_len || memcmp (d->chksum, cdata, clen))
3016 { 3012 {
3013 d->chksum_len = clen;
3017 memcpy (d->chksum, cdata, clen); 3014 memcpy (d->chksum, cdata, clen);
3018 3015
3019 // invalidate existing client face info 3016 // invalidate existing client face info
3020 for_all_clients (ns) 3017 for_all_clients (ns)
3021 if (ns->faceset == faceset) 3018 if (ns->faceset == faceset)
3036 3033
3037SV *get_chksum (faceidx idx, int faceset = 0) 3034SV *get_chksum (faceidx idx, int faceset = 0)
3038 CODE: 3035 CODE:
3039 facedata *d = face_data (idx, faceset); 3036 facedata *d = face_data (idx, faceset);
3040 if (!d) XSRETURN_UNDEF; 3037 if (!d) XSRETURN_UNDEF;
3041 RETVAL = newSVpvn ((char *)d->chksum, CHKSUM_SIZE); 3038 RETVAL = newSVpvn ((char *)d->chksum, d->chksum_len);
3042 OUTPUT: 3039 OUTPUT:
3043 RETVAL 3040 RETVAL
3044 3041
3045SV *get_data (faceidx idx, int faceset = 0) 3042SV *get_data (faceidx idx, int faceset = 0)
3046 CODE: 3043 CODE:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines