diff --git a/bits/43_rbtree.js b/bits/43_rbtree.js index f601cb8..bab2f32 100644 --- a/bits/43_rbtree.js +++ b/bits/43_rbtree.js @@ -23,13 +23,12 @@ function build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Arr for(i=1; i < pl; ++i) { if(FI[i].type === 0 /* unknown */) continue; - j = dad[i]; - if(j === 0) FP[i] = FP[0] + "/" + FP[i]; - else while(j !== 0 && j !== dad[j]) { - FP[i] = FP[j] + "/" + FP[i]; + j = i; + do { j = dad[j]; - } - dad[i] = 0; + FP[i] = FP[j] + "/" + FP[i]; + } while (j !== 0 && -1 !== dad[j]); + dad[i] = -1; } FP[0] += "/"; diff --git a/cfb.flow.js b/cfb.flow.js index 06792cc..914d646 100644 --- a/cfb.flow.js +++ b/cfb.flow.js @@ -552,13 +552,12 @@ function build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Arr for(i=1; i < pl; ++i) { if(FI[i].type === 0 /* unknown */) continue; - j = dad[i]; - if(j === 0) FP[i] = FP[0] + "/" + FP[i]; - else while(j !== 0 && j !== dad[j]) { - FP[i] = FP[j] + "/" + FP[i]; + j = i; + do { j = dad[j]; - } - dad[i] = 0; + FP[i] = FP[j] + "/" + FP[i]; + } while (j !== 0 && -1 !== dad[j]); + dad[i] = -1; } FP[0] += "/"; diff --git a/cfb.js b/cfb.js index dd56c02..8cc0fc5 100644 --- a/cfb.js +++ b/cfb.js @@ -534,13 +534,12 @@ function build_full_paths(FI, FP, Paths) { for(i=1; i < pl; ++i) { if(FI[i].type === 0 /* unknown */) continue; - j = dad[i]; - if(j === 0) FP[i] = FP[0] + "/" + FP[i]; - else while(j !== 0 && j !== dad[j]) { - FP[i] = FP[j] + "/" + FP[i]; + j = i; + do { j = dad[j]; - } - dad[i] = 0; + FP[i] = FP[j] + "/" + FP[i]; + } while (j !== 0 && -1 !== dad[j]); + dad[i] = -1; } FP[0] += "/"; diff --git a/dist/cfb.js b/dist/cfb.js index dd56c02..8cc0fc5 100644 --- a/dist/cfb.js +++ b/dist/cfb.js @@ -534,13 +534,12 @@ function build_full_paths(FI, FP, Paths) { for(i=1; i < pl; ++i) { if(FI[i].type === 0 /* unknown */) continue; - j = dad[i]; - if(j === 0) FP[i] = FP[0] + "/" + FP[i]; - else while(j !== 0 && j !== dad[j]) { - FP[i] = FP[j] + "/" + FP[i]; + j = i; + do { j = dad[j]; - } - dad[i] = 0; + FP[i] = FP[j] + "/" + FP[i]; + } while (j !== 0 && -1 !== dad[j]); + dad[i] = -1; } FP[0] += "/"; diff --git a/dist/xlscfb.js b/dist/xlscfb.js index b3e0231..b124628 100644 --- a/dist/xlscfb.js +++ b/dist/xlscfb.js @@ -399,13 +399,12 @@ function build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Arr for(i=1; i < pl; ++i) { if(FI[i].type === 0 /* unknown */) continue; - j = dad[i]; - if(j === 0) FP[i] = FP[0] + "/" + FP[i]; - else while(j !== 0 && j !== dad[j]) { - FP[i] = FP[j] + "/" + FP[i]; + j = i; + do { j = dad[j]; - } - dad[i] = 0; + FP[i] = FP[j] + "/" + FP[i]; + } while (j !== 0 && -1 !== dad[j]); + dad[i] = -1; } FP[0] += "/"; diff --git a/xlscfb.flow.js b/xlscfb.flow.js index b3e0231..b124628 100644 --- a/xlscfb.flow.js +++ b/xlscfb.flow.js @@ -399,13 +399,12 @@ function build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Arr for(i=1; i < pl; ++i) { if(FI[i].type === 0 /* unknown */) continue; - j = dad[i]; - if(j === 0) FP[i] = FP[0] + "/" + FP[i]; - else while(j !== 0 && j !== dad[j]) { - FP[i] = FP[j] + "/" + FP[i]; + j = i; + do { j = dad[j]; - } - dad[i] = 0; + FP[i] = FP[j] + "/" + FP[i]; + } while (j !== 0 && -1 !== dad[j]); + dad[i] = -1; } FP[0] += "/"; diff --git a/xlscfb.js b/xlscfb.js index a3cb56e..fb9fd5b 100644 --- a/xlscfb.js +++ b/xlscfb.js @@ -366,13 +366,12 @@ function build_full_paths(FI, FP, Paths) { for(i=1; i < pl; ++i) { if(FI[i].type === 0 /* unknown */) continue; - j = dad[i]; - if(j === 0) FP[i] = FP[0] + "/" + FP[i]; - else while(j !== 0 && j !== dad[j]) { - FP[i] = FP[j] + "/" + FP[i]; + j = i; + do { j = dad[j]; - } - dad[i] = 0; + FP[i] = FP[j] + "/" + FP[i]; + } while (j !== 0 && -1 !== dad[j]); + dad[i] = -1; } FP[0] += "/";