From 9f568d3658212b606dfca33c61d77d472a01168c Mon Sep 17 00:00:00 2001
From: kliment <kliment@0xfb.com>
Date: Wed, 1 Dec 2021 13:20:35 +0000
Subject: [PATCH] Eeschema: Add support for leading zeroes when
 auto-incrementing names (fixes #9831)

---
 eeschema/sch_text.cpp | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/eeschema/sch_text.cpp b/eeschema/sch_text.cpp
index 549433d6d9..7c6fb092d5 100644
--- a/eeschema/sch_text.cpp
+++ b/eeschema/sch_text.cpp
@@ -59,7 +59,10 @@ bool IncrementLabelMember( wxString& name, int aIncrement )
 
     wxString suffix;
     wxString digits;
-    int      ii = name.Len() - 1;
+    wxString outputFormat;
+    wxString outputNumber;
+    int      ii     = name.Len() - 1;
+    int      dCount = 0;
 
     while( ii >= 0 && !wxIsdigit( name.GetChar( ii ) ) )
     {
@@ -71,6 +74,7 @@ bool IncrementLabelMember( wxString& name, int aIncrement )
     {
         digits = name.GetChar( ii ) + digits;
         ii--;
+        dCount++;
     }
 
     if( digits.IsEmpty() )
@@ -87,7 +91,11 @@ bool IncrementLabelMember( wxString& name, int aIncrement )
         if( number > -1 )
         {
             name.Remove( ii + 1 );
-            name << number << suffix;
+            //write out a format string with correct number of leading zeroes
+            outputFormat.Printf( "%%0%dd", dCount );
+            //write out the number using the format string
+            outputNumber.Printf( outputFormat, number );
+            name << outputNumber << suffix;
             return true;
         }
     }