p->zBuf[0] = 1;
p->zBuf[0] = 0;
static void minmaxStep(sqlite_func *context, int argc, const char **argv){  MinMaxCtx *p;  int (*xCompare)(const char*, const char*);  int mask;    /* 0 for min() or 0xffffffff for max() */  assert( argc==2 );  if( argv[1][0]=='n' ){    xCompare = sqliteCompare;  }else{    xCompare = strcmp;  }  mask = (int)sqlite_user_data(context);  p = sqlite_aggregate_context(context, sizeof(*p));  if( p==0 || argc<1 || argv[0]==0 ) return;  if( p->z==0 || (xCompare(argv[0],p->z)^mask)<0 ){    int len;    if( !p->zBuf[0] ){      sqliteFree(p->z);    }    len = strlen(argv[0]);    if( len < sizeof(p->zBuf)-1 ){      p->z = &p->zBuf[1];      p->zBuf[0] = 1;    }else{      p->z = sqliteMalloc( len+1 );      p->zBuf[0] = 0;      if( p->z==0 ) return;    }    strcpy(p->z, argv[0]);  }}