https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102030

--- Comment #1 from Joe Eagar <joeedh at gmail dot com> ---
I forgot to add, the offending function is BM_mesh_bm_from_me:


void BM_mesh_bm_from_me(Object *ob,
                        BMesh *bm,
                        const Mesh *me,
                        const struct BMeshFromMeshParams *params)
{
  const bool is_new = !(bm->totvert || (bm->vdata.totlayer ||
bm->edata.totlayer ||
                                        bm->pdata.totlayer ||
bm->ldata.totlayer));
  MVert *mvert;
  MEdge *medge;
  MLoop *mloop;
  MPoly *mp;
  KeyBlock *actkey, *block;
  BMVert *v, **vtable = NULL;
  BMEdge *e, **etable = NULL;
  BMFace *f, **ftable = NULL;
  float(*keyco)[3] = NULL;
  int totloops, i;
  CustomData_MeshMasks mask = CD_MASK_BMESH;
  CustomData_MeshMasks_update(&mask, &params->cd_mask_extra);

  if (params->copy_temp_cdlayers) {
    bm_unmark_temp_cdlayers(bm);
  }

  printf("1 ob: %p, %s\n", ob, ob ? "true" : "false");
  fflush(stdout);

  printf("2 ob: %p, %s\n", ob, NULL ? "true" : "false");
  fflush(stdout);

  printf("3 ob: %p, %s\n", ob, ((Object*)NULL) ? "true" : "false");
  fflush(stdout);

  printf("4 ob: %p, %s\n", ob, ((Object*)0) ? "true" : "false");  
  fflush(stdout);

  MultiresModifierData *mmd;
  if (ob) {
        mmd = get_multires_modifier(NULL, ob, true);
  } else {
        mmd = NULL;
  }

  if (params->copy_temp_cdlayers) {
    mask.vmask |= CD_MASK_MESH_ID;
    mask.emask |= CD_MASK_MESH_ID;
    mask.lmask |= CD_MASK_MESH_ID;
    mask.pmask |= CD_MASK_MESH_ID;
  }

  if (mmd) {
    bm->multires = *mmd;
    bm->haveMultiResSettings = true;
    bm->multiresSpace = MULTIRES_SPACE_TANGENT;
  }
  else {
    bm->haveMultiResSettings = false;
  }

  if (ob) {
        printf("ob! %p\n", ob);
  }
}

Reply via email to