Calling a function that returns array stops printArray

so i try to help you with that code ( still without understanding the purpose )
by put in a diagnostic line at each function,

  • so you know when it is executed
  • you know what is returned

and i hope it helps you with your project

code
// https://discourse.processing.org/t/calling-a-function-that-returns-array-stops-printarray/6108

int ws=6, ls=6;
int sx=0;
int ex=findex();
int myline[] = new int[ls+1];
int posx = 100, posy = 100, w = 20;                // rect grid settings
boolean dbug = true;                               // print each function result

void setup() {
  background(255);
  size(640, 640);  
  for (int i = 1; i<ls+1; i++) myline[i]=i;          // set in some numbers as test ??
  myline=grabline();                                 // this overwrites it? but gives same, see print
}

void draw() {
  for ( int i =0; i<ls*ws; i++)  rect(posx+w*(i%ws), posy+w*floor(i/ws), w, w);
}

int findex() {
  int result=-1;
  result+=(ws*ls);
  if (dbug) println("findex_result: "+result);
  return result;
}

int[] details(int nom, int smallw) {
  int[] r = new int[6];                              // keep local
  r[0]=nom;
  r[1]=smallw;
  // denominator will always go in once to larger number above
  if (smallw>0) for (int total=smallw; total<=nom; total+=smallw) {
    // how many w go into nom
    r[2]++;
    r[3]=total+smallw;
    r[4]=total;
  }
  // find Error in total+smallw
  int nearzero=greater(r[0], r[3]) - lesser(r[0], r[3]);
  // find error in total
  int nearzero2=greater(r[0], r[4]) - lesser(r[0], r[4]);
  r[5]=lesser(nearzero, nearzero2);
  // if E better when total+smallw best, add 1 to R
  if (nearzero<nearzero2) {
    r[2]++;
  }
  if (dbug) { 
    println("details_r: "); 
    println(r);
  }
  return r;
}

int greater(int nominator, int denominator) {
  int g=0;
  if (nominator>denominator) {
    g=nominator;
  }
  if (denominator>=nominator) {
    g=denominator;
  }
  if (dbug) println("greater_g: "+g);
  return g;
}

int lesser(int nominator, int denominator) {
  int result=0;
  if (nominator<denominator) {
    result=nominator;
  }
  if (denominator<=nominator) {
    result=denominator;
  }
  if (dbug) println("lesser_result: "+result);
  return result;
}

int w(int l, int w) {
  if (l>w) {
    if (dbug) println("w_: "+(l-w));
    return l-w;
  }
  if (w>l) {
    if (dbug) println("w_: "+(w-l));
    return w-l;
  }
  if (dbug) println("w_: 0");
  return 0;
}

int l(int sx, int ex) {
  int c=ex;
  int L=0;
  while (c>=sx) {
    c-=ws;
    L++;
  }
  if (dbug) println("l_L: "+L);
  return L;
}

int d(int sx, int ex) {
  int L=0;
  int c=ex;
  int result=0;
  while (c>=sx) {
    c-=ws;
    L++;
  }
  result=ex-(ws*(L-1)-sx);  
  if (dbug) println("d_result: "+result);
  return result;
}

int[] grabline() {
  int mylength=l(sx, ex);
  int mywidth=d(sx, ex)+1;
  int mydepth=d(sx, ex);
  int longside=greater(mylength, mywidth);
  int shortside=lesser(mylength, mywidth);
  int w=w(longside, shortside);
  int nom=greater(shortside, w);
  int denom=lesser(shortside, w);
  int r[]=details(nom, denom);
  int subtract=ex;
  int depth=mydepth;
  int x=0;
  if (dbug) println("grabline_myline:");
  printArray(myline);
  return myline;
}