From 88d800f6574c00ebe1e6496010ef41474c44ae5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Leite?= Date: Sun, 14 Jun 2026 15:05:09 -0300 Subject: [PATCH 1/2] Fix memory leak, height default, doc defaults; regenerate logo Audit fixes: - #1 src/pikchr.c: free() the malloc'd buffer returned by pikchr() in pikchr_c() (was leaking the full SVG string on every render) and guard against a NULL return (mkChar(NULL) would crash R) by emitting NA. Also switch the legacy STRING_VALUE macro to CHAR(STRING_ELT(...)). - #2 R/pikchrWrappers.R: fix the height default. The second guard tested `width` again (always FALSE), so `height` never defaulted from the viewBox and produced an empty `height:;` CSS rule. - #3 R/pikchrWrappers.R + man/pikchr.Rd: align documented @param defaults with the actual signature (width/height -> viewBox, fontSize 100%, fontFamily Jost, align none). Logo: regenerate man/figures/pikchrHex.svg and logo.png with a geometrically regular hexagon (was squished, ratio 0.73 vs 0.866) and fix the invalid element (-> ). Generator added under tools/. Co-Authored-By: Claude Opus 4.8 (1M context) --- .Rbuildignore | 1 + R/pikchrWrappers.R | 12 ++-- man/figures/logo.png | Bin 55704 -> 49220 bytes man/figures/pikchrHex.svg | 59 +++++++++--------- man/pikchr.Rd | 10 +-- src/pikchr.c | 17 +++--- tools/generate_logo.py | 125 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 176 insertions(+), 48 deletions(-) create mode 100644 tools/generate_logo.py diff --git a/.Rbuildignore b/.Rbuildignore index c62c308..ab181df 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -10,3 +10,4 @@ ^vignettes/articles$ ^doc$ ^Meta$ +^tools$ diff --git a/R/pikchrWrappers.R b/R/pikchrWrappers.R index 34659e2..8af0f24 100644 --- a/R/pikchrWrappers.R +++ b/R/pikchrWrappers.R @@ -4,12 +4,12 @@ #' Pikchr is a diagram language inspired by PIC, and this function allows you to easily embed Pikchr diagrams as SVG images in your HTML or Markdown documents. #' #' @param code A character string containing the diagram code written in the Pikchr language. -#' @param width A character string representing the width of the rendered SVG. It accepts standard HTML values such as percentages ("75\%"), pixels ("300px"), or "auto". Defaults to "75\%". -#' @param height A character string representing the height of the rendered SVG. It accepts standard HTML values such as pixels ("300px") or "auto". Defaults to "auto". -#' @param fontSize A character string specifying the font size of the text within the SVG. It accepts standard HTML values such as percentages ("80\%"), pixels, or keywords ("large"). Defaults to "80\%". -#' @param fontFamily A character string specifying the font family for the text in the diagram. Common values include "inherit" (to use the page's default font), "Arial", "Times New Roman", etc. Defaults to "inherit". +#' @param width A character string representing the width of the rendered SVG. It accepts standard HTML values such as percentages ("75\%"), pixels ("300px"), or "auto". If NULL (default), the intrinsic width from the SVG viewBox is used. +#' @param height A character string representing the height of the rendered SVG. It accepts standard HTML values such as pixels ("300px") or "auto". If NULL (default), the intrinsic height from the SVG viewBox is used. +#' @param fontSize A character string specifying the font size of the text within the SVG. It accepts standard HTML values such as percentages ("80\%"), pixels, or keywords ("large"). Defaults to "100\%". +#' @param fontFamily A character string specifying the font family for the text in the diagram. Common values include "inherit" (to use the page's default font), "Arial", "Times New Roman", etc. Defaults to "Jost". #' @param class A character string specifying a CSS class to apply to the SVG. This can be used to style the SVG with external CSS rules. Defaults to "pikchr". -#' @param align A character string specifying the alignment of the SVG within its container. Options are "center" (default), "left", or "right". If set to "none", no alignment is applied. +#' @param align A character string specifying the alignment of the SVG within its container. Options are "center", "left", or "right". Defaults to "none", in which case no alignment wrapper is applied. #' @param css A character string containing extra CSS styles to apply directly to the SVG element. This allows additional customization beyond width, height, and font settings. If NULL, no extra styles are applied. #' @param margin A character string specifying the margin around the SVG element, formatted like a CSS margin rule (e.g., "10px 0 10px 0"). Defaults to "10px 0 10px 0". #' @param svgOnly Logical, whether to return only the raw SVG code (TRUE) or open the diagram in the Viewer window (FALSE, default). @@ -61,7 +61,7 @@ pikchr <- function(code, bbox_width <- bbox[3] - bbox[1] if (is.null(width)) width <- bbox_width - if (is.null(width)) width <- bbox_height + if (is.null(height)) height <- bbox_height styles = paste0("style='width:", width, ";height:", height, diff --git a/man/figures/logo.png b/man/figures/logo.png index 31d63df0e43e3f0ce3c016c34fb19ae0e23d2942..cfd8b437f185186f4a35a42963baa8beefd26245 100644 GIT binary patch literal 49220 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

adEunRI?9VoIIQE181NX)i(D||1pZU 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 _Ljzy&r%#pd5M3KQxyu%|;=D+kd-pCKLsDA3^< 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 Q0{D@Z_#$2*Y7p>$08zN_;{X5v literal 55704 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∨M81Ses$lruBsy}i;jznAxBd66}I< zzjXx6)V|W%)I4g`H+K|6KUA-Sjl1U0Faf>vFs+(Ag5rU z7}ePF$Fam7D*TjiT{O-)F*N%0{lYt3m`=Jsd-U%CY!NuQC05_kN(>Z49n=aVevZ9+ zAO(ngqV{L0*^|OoHCoe%pjX zt{x&5nntatJ$Fh%DuB`#QhhZ(u9J!CsqzwSf7KUq!K>(pj=EQBT%)?3J)cyV@`_IKZpb898yDpIAj3)% zSyLui=TO!fDd^f)_(SrJz>Sa%W?NB9h#*mv(oOdUh<8#Nk*O*6Uhy9lEnoD#fhX&IxJ` zLyk&HKSh0?!jqxfBOz#>o$PeHSIO5g1!9&HdKT5d*gxe*el?zbDXSs^fDT6vM=v#o zAgF}>kmaW4h~eW;E-qGqy=8w-EfCPjv29~x;uHqmri4)-p>~yg7Xjl5iN1@kQ^O}h zet@^pWQ(V~O)j5;-IrD};2k>dX0F4BLCWBCM>1j7H$d2(!XsC$ue2F~kP>Vliyo#g zPq8qI$M&be1Yc7kkz3qwr`&`c9EtRroplb0CZ_m_2n>nyBL@}7<8T=adwyXYu{7z3;?jsFDM z{0{jTm6XHull24D#p5`!rGaWfhI+;tnwJ!v-@z=diMMdeK8pi=cqS=}?Fk)3;_eCXm$$SqelR=}T(1<$70B<%02%RmRZq?^fXf z*ufnrPgA7fZO{t^@GveKW>CZJ`u5GlFvhY1-NFej-2WfwY;EK@TLv(XW(1i`w95AA zvgW~^>FP1I%#r?@!Ip*NX)W>NmNjisAvMkkQV4tI>{@J=SQLECwcu~AbUa}cFlq{X0{Y-Y(am%becU!-2^acKYdC`TA*B4~upwrv+ zPe4|Sx9Nn-&w2;XU+RUM`!PtZHW_0PL8}Br=GoKu{_cCSmm`^DDbZTM@{U$=2bH?? z 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 a`@K2kn8@nOj`EwE;6v0sL!h6q3Hcw0#2aq_ diff --git a/man/figures/pikchrHex.svg b/man/figures/pikchrHex.svg index a319cbb..3f3dea5 100644 --- a/man/figures/pikchrHex.svg +++ b/man/figures/pikchrHex.svg @@ -1,31 +1,30 @@ - - -Pikchr - - - - - - - - - - - - - - - - - - - - - - - - - - + + +Pikchr + + + + + + + + + + + + + + + + + + + + + + + + + + - diff --git a/man/pikchr.Rd b/man/pikchr.Rd index d7c8a3f..b37865a 100644 --- a/man/pikchr.Rd +++ b/man/pikchr.Rd @@ -20,17 +20,17 @@ pikchr( \arguments{ \item{code}{A character string containing the diagram code written in the Pikchr language.} -\item{width}{A character string representing the width of the rendered SVG. It accepts standard HTML values such as percentages ("75\%"), pixels ("300px"), or "auto". Defaults to "75\%".} +\item{width}{A character string representing the width of the rendered SVG. It accepts standard HTML values such as percentages ("75\%"), pixels ("300px"), or "auto". If NULL (default), the intrinsic width from the SVG viewBox is used.} -\item{height}{A character string representing the height of the rendered SVG. It accepts standard HTML values such as pixels ("300px") or "auto". Defaults to "auto".} +\item{height}{A character string representing the height of the rendered SVG. It accepts standard HTML values such as pixels ("300px") or "auto". If NULL (default), the intrinsic height from the SVG viewBox is used.} -\item{fontSize}{A character string specifying the font size of the text within the SVG. It accepts standard HTML values such as percentages ("80\%"), pixels, or keywords ("large"). Defaults to "80\%".} +\item{fontSize}{A character string specifying the font size of the text within the SVG. It accepts standard HTML values such as percentages ("80\%"), pixels, or keywords ("large"). Defaults to "100\%".} -\item{fontFamily}{A character string specifying the font family for the text in the diagram. Common values include "inherit" (to use the page's default font), "Arial", "Times New Roman", etc. Defaults to "inherit".} +\item{fontFamily}{A character string specifying the font family for the text in the diagram. Common values include "inherit" (to use the page's default font), "Arial", "Times New Roman", etc. Defaults to "Jost".} \item{class}{A character string specifying a CSS class to apply to the SVG. This can be used to style the SVG with external CSS rules. Defaults to "pikchr".} -\item{align}{A character string specifying the alignment of the SVG within its container. Options are "center" (default), "left", or "right". If set to "none", no alignment is applied.} +\item{align}{A character string specifying the alignment of the SVG within its container. Options are "center", "left", or "right". Defaults to "none", in which case no alignment wrapper is applied.} \item{css}{A character string containing extra CSS styles to apply directly to the SVG element. This allows additional customization beyond width, height, and font settings. If NULL, no extra styles are applied.} diff --git a/src/pikchr.c b/src/pikchr.c index 65a64b7..00f74f4 100644 --- a/src/pikchr.c +++ b/src/pikchr.c @@ -8281,13 +8281,16 @@ return exitCode ? EXIT_FAILURE : EXIT_SUCCESS; SEXP pikchr_c (SEXP code, SEXP class) { - const char *pcode = STRING_VALUE(code); - const char *pclass = STRING_VALUE(class); - char *zOut; - zOut = pikchr(pcode, pclass, 0, NULL, NULL); - SEXP result; - PROTECT(result = NEW_CHARACTER(1)); - SET_STRING_ELT(result, 0, mkChar(zOut)); + const char *pcode = CHAR(STRING_ELT(code, 0)); + const char *pclass = CHAR(STRING_ELT(class, 0)); + char *zOut = pikchr(pcode, pclass, 0, NULL, NULL); + SEXP result = PROTECT(allocVector(STRSXP, 1)); + if( zOut ){ + SET_STRING_ELT(result, 0, mkChar(zOut)); + free(zOut); /* pikchr() returns malloc'd memory */ + } else { + SET_STRING_ELT(result, 0, NA_STRING); + } UNPROTECT(1); return(result); } diff --git a/tools/generate_logo.py b/tools/generate_logo.py new file mode 100644 index 0000000..c50b2d0 --- /dev/null +++ b/tools/generate_logo.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 +"""Generate a geometrically regular hexagon logo for the pikchr R package. + +The previous man/figures/pikchrHex.svg had a horizontally squished hexagon +(width/height ratio ~0.73 instead of the regular 0.866) and used an invalid + element instead of . This script rebuilds the same visual design +(filled hexagon + two concentric hexagonal rings of circles connected by +trimmed edges + two lens arcs + centered "Pikchr" text) using exact regular +pointy-top hexagon geometry. +""" +import math + +S3 = math.sqrt(3) / 2.0 # cos(30) -> regular hexagon horizontal factor +R_OUT = 39.34155 # outer circumradius (keeps original height) +R1 = 31.4736 # outer ring (light green) circumradius +R2 = 23.605 # inner ring (medium green) circumradius +CR = 1.44 # small circle radius / edge trim length +PAD = 1.44 # padding around the figure + +# Center: top vertex sits PAD below the top edge; left vertex PAD from left edge. +CX = R_OUT * S3 + PAD +CY = R_OUT + PAD +VB_W = 2 * R_OUT * S3 + 2 * PAD +VB_H = 2 * R_OUT + 2 * PAD + + +def hexagon(R): + """Pointy-top regular hexagon vertices (y grows downward), clockwise.""" + return [ + (CX, CY - R), # top + (CX + R * S3, CY - R / 2), # upper-right + (CX + R * S3, CY + R / 2), # lower-right + (CX, CY + R), # bottom + (CX - R * S3, CY + R / 2), # lower-left + (CX - R * S3, CY - R / 2), # upper-left + ] + + +def trim(p, q, d): + """Point d units from p toward q.""" + vx, vy = q[0] - p[0], q[1] - p[1] + n = math.hypot(vx, vy) + return (p[0] + vx / n * d, p[1] + vy / n * d) + + +def f(v): + return f"{v:.4f}".rstrip("0").rstrip(".") + + +COL_FILL = "rgb(39,174,96)" +COL_FILL_STROKE = "rgb(25,111,61)" +COL_R1 = "rgb(125,206,160)" +COL_R2 = "rgb(82,190,128)" + +parts = [] +parts.append( + "" + "" +) + +# Filled outer hexagon +hx = hexagon(R_OUT) +d = "M" + "L".join(f"{f(x)},{f(y)}" for x, y in hx) + "Z" +parts.append( + f'' +) + +# Centered text +parts.append( + f'Pikchr' +) + + +def ring(R, color): + verts = hexagon(R) + out = [] + for vx, vy in verts: + out.append( + f'' + ) + for i in range(6): + a, b = verts[i], verts[(i + 1) % 6] + s = trim(a, b, CR) + e = trim(b, a, CR) + out.append( + f'' + ) + return out, verts + + +r1_parts, _ = ring(R1, COL_R1) +parts.extend(r1_parts) +r2_parts, r2v = ring(R2, COL_R2) +parts.extend(r2_parts) + +# Two lens arcs on the inner ring (bulging beyond top/bottom vertices) +BULGE = 2.31 +c_bottom = (CX, CY + R2 + BULGE) +c_top = (CX, CY - R2 - BULGE) +lr, ll = r2v[2], r2v[4] # lower-right, lower-left +ur, ul = r2v[1], r2v[5] # upper-right, upper-left +for (p, q, c) in ((lr, ll, c_bottom), (ur, ul, c_top)): + s = trim(p, c, CR) + e = trim(q, c, CR) + parts.append( + f'' + ) + +parts.append("") + +with open("man/figures/pikchrHex.svg", "w") as fh: + fh.write("\n".join(parts) + "\n") + +print(f"viewBox 0 0 {f(VB_W)} {f(VB_H)} ratio={VB_W/VB_H:.4f}") +print(f"hex width/height ratio = {(2*R_OUT*S3)/(2*R_OUT):.4f} (regular = 0.8660)") From 577601a1e834cf62c03f285c928504150ae9d101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Leite?= Date: Sun, 14 Jun 2026 15:21:19 -0300 Subject: [PATCH 2/2] Prepare 1.1.1 release: bump version, NEWS, cran-comments - Bump to 1.1.1 (patch) with today's date. - Document the audit bug fixes in NEWS.md. - Update cran-comments.md for the bug-fix resubmission. - Add .claude/ to .Rbuildignore so it is not bundled in the tarball (R CMD check --as-cran flagged it as a hidden directory). Co-Authored-By: Claude Opus 4.8 (1M context) --- .Rbuildignore | 1 + DESCRIPTION | 4 ++-- NEWS.md | 13 +++++++++++++ cran-comments.md | 9 +++++++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.Rbuildignore b/.Rbuildignore index ab181df..d3a3426 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -11,3 +11,4 @@ ^doc$ ^Meta$ ^tools$ +^\.claude$ diff --git a/DESCRIPTION b/DESCRIPTION index 43d6025..108b56c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Type: Package Package: pikchr Title: R Wrapper for 'pikchr' (PIC) Diagram Language -Version: 1.1.0 -Date: 2026-04-07 +Version: 1.1.1 +Date: 2026-06-14 Authors@R: c( person("Andre", "Leite", email = "leite@castlab.org", role = c("aut", "cre")), person("Hugo", "Vaconcelos", email = "hugo.vasconcelos@ufpe.br", role = "aut"), diff --git a/NEWS.md b/NEWS.md index 0b005f7..8dee498 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,16 @@ +# pikchr 1.1.1 + +## Bug fixes + +- Fixed a memory leak in the C interface (`pikchr_c`): the SVG buffer returned by `pikchr()` was never freed, leaking on every diagram render. +- Guarded the C interface against a possible `NULL` return from `pikchr()` that could crash the R session. +- Fixed the `height` argument default in `pikchr()`, which never fell back to the SVG `viewBox` height and produced an empty `height:` CSS rule. +- Aligned the documented argument defaults of `pikchr()` (`width`, `height`, `fontSize`, `fontFamily`, `align`) with the actual function defaults. + +## Other + +- Regenerated the package logo with a geometrically regular hexagon (the previous SVG was horizontally squished) and fixed an invalid `` element (now ``) in the logo source. + # pikchr 1.1.0 ## New features diff --git a/cran-comments.md b/cran-comments.md index 6f0f3d1..b14cc32 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,3 +1,12 @@ +## Resubmission + +This is a patch release (1.1.1) fixing bugs found during an internal audit: + +- Fixed a memory leak in the C interface (the SVG buffer was never freed). +- Guarded the C interface against a possible NULL return that could crash R. +- Fixed the `height` argument default in `pikchr()`. +- Aligned documented argument defaults with the actual defaults. + ## R CMD check results 0 errors | 0 warnings | 0 notes