Free Hero Mesh

Check-in [cb7aff32a7]
Login
This is a mirror of the main repository for Free Hero Mesh. New tickets and changes will not be accepted at this mirror.
Overview
Comment:Correct the implementation of BroadcastAnd
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: cb7aff32a7449b83b301a9a5f41078bcb0182861
User & Date: user on 2022-03-09 05:01:04
Other Links: manifest | tags
Context
2022-03-22
02:14
Implement TraceStack and ,TraceStack instructions. check-in: 189af944e7 user: user tags: trunk
2022-03-09
05:01
Correct the implementation of BroadcastAnd check-in: cb7aff32a7 user: user tags: trunk
04:46
When a level is changed, set the user state to unsolved even if no solution has been recorded. check-in: e93f746d5e user: user tags: trunk
Changes

Modified exec.c from [c9c1928e06] to [6470854eef].

3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
}

static Uint32 broadcast(Uint32 from,int c,Uint16 msg,Value arg1,Value arg2,Value arg3,Uint8 s) {
  Uint32 t=0;
  Uint32 n;
  Object*o;
  Value v;
  if(s==2) t=0xFFFFFFFFULL;
  if(lastobj==VOIDLINK) return t;
  n=lastobj;
  if(c && (classes[c]->cflags&CF_GROUP)) Throw("Broadcast for abstract classes is not implemented yet");
  while(o=objects[n]) {
    if(!c || o->class==c) {
      v=send_message(from,n,msg,arg1,arg2,arg3);
      switch(s) {







|







3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
}

static Uint32 broadcast(Uint32 from,int c,Uint16 msg,Value arg1,Value arg2,Value arg3,Uint8 s) {
  Uint32 t=0;
  Uint32 n;
  Object*o;
  Value v;
  if(s==2) t=1;
  if(lastobj==VOIDLINK) return t;
  n=lastobj;
  if(c && (classes[c]->cflags&CF_GROUP)) Throw("Broadcast for abstract classes is not implemented yet");
  while(o=objects[n]) {
    if(!c || o->class==c) {
      v=send_message(from,n,msg,arg1,arg2,arg3);
      switch(s) {
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
            default:
              if(v.t<=TY_MAXTYPE) Throw("Invalid return type for BroadcastSum");
              t++;
          }
          break;
        case 2:
          switch(v.t) {
            case TY_NUMBER: if(!v.u) return 0;
            case TY_SOUND: case TY_USOUND: Throw("Invalid return type for BroadcastAnd");
          }
          break;
        case 3:
          StackReq(0,1);
          if(v.t!=TY_MARK) Push(v);
          break;







|







3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
            default:
              if(v.t<=TY_MAXTYPE) Throw("Invalid return type for BroadcastSum");
              t++;
          }
          break;
        case 2:
          switch(v.t) {
            case TY_NUMBER: if(!v.u) return 0; break;
            case TY_SOUND: case TY_USOUND: Throw("Invalid return type for BroadcastAnd");
          }
          break;
        case 3:
          StackReq(0,1);
          if(v.t!=TY_MARK) Push(v);
          break;