mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	Mark strings as UTF-8 when passing them to Perl
This commit is contained in:
		
							parent
							
								
									df508551d0
								
							
						
					
					
						commit
						cfc1c5037d
					
				
					 2 changed files with 9 additions and 9 deletions
				
			
		| 
						 | 
					@ -111,12 +111,12 @@ ConfigBase::get(t_config_option_key opt_key) {
 | 
				
			||||||
        return newRV_noinc((SV*)av);
 | 
					        return newRV_noinc((SV*)av);
 | 
				
			||||||
    } else if (ConfigOptionString* optv = dynamic_cast<ConfigOptionString*>(opt)) {
 | 
					    } else if (ConfigOptionString* optv = dynamic_cast<ConfigOptionString*>(opt)) {
 | 
				
			||||||
        // we don't serialize() because that would escape newlines
 | 
					        // we don't serialize() because that would escape newlines
 | 
				
			||||||
        return newSVpvn(optv->value.c_str(), optv->value.length());
 | 
					        return newSVpvn_utf8(optv->value.c_str(), optv->value.length(), true);
 | 
				
			||||||
    } else if (ConfigOptionStrings* optv = dynamic_cast<ConfigOptionStrings*>(opt)) {
 | 
					    } else if (ConfigOptionStrings* optv = dynamic_cast<ConfigOptionStrings*>(opt)) {
 | 
				
			||||||
        AV* av = newAV();
 | 
					        AV* av = newAV();
 | 
				
			||||||
        av_fill(av, optv->values.size()-1);
 | 
					        av_fill(av, optv->values.size()-1);
 | 
				
			||||||
        for (std::vector<std::string>::iterator it = optv->values.begin(); it != optv->values.end(); ++it)
 | 
					        for (std::vector<std::string>::iterator it = optv->values.begin(); it != optv->values.end(); ++it)
 | 
				
			||||||
            av_store(av, it - optv->values.begin(), newSVpvn(it->c_str(), it->length()));
 | 
					            av_store(av, it - optv->values.begin(), newSVpvn_utf8(it->c_str(), it->length(), true));
 | 
				
			||||||
        return newRV_noinc((SV*)av);
 | 
					        return newRV_noinc((SV*)av);
 | 
				
			||||||
    } else if (ConfigOptionPoint* optv = dynamic_cast<ConfigOptionPoint*>(opt)) {
 | 
					    } else if (ConfigOptionPoint* optv = dynamic_cast<ConfigOptionPoint*>(opt)) {
 | 
				
			||||||
        return optv->point.to_SV_pureperl();
 | 
					        return optv->point.to_SV_pureperl();
 | 
				
			||||||
| 
						 | 
					@ -136,7 +136,7 @@ ConfigBase::get(t_config_option_key opt_key) {
 | 
				
			||||||
        return newRV_noinc((SV*)av);
 | 
					        return newRV_noinc((SV*)av);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        std::string serialized = opt->serialize();
 | 
					        std::string serialized = opt->serialize();
 | 
				
			||||||
        return newSVpvn(serialized.c_str(), serialized.length());
 | 
					        return newSVpvn_utf8(serialized.c_str(), serialized.length(), true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -152,7 +152,7 @@ ConfigBase::get_at(t_config_option_key opt_key, size_t i) {
 | 
				
			||||||
    } else if (ConfigOptionStrings* optv = dynamic_cast<ConfigOptionStrings*>(opt)) {
 | 
					    } else if (ConfigOptionStrings* optv = dynamic_cast<ConfigOptionStrings*>(opt)) {
 | 
				
			||||||
        // we don't serialize() because that would escape newlines
 | 
					        // we don't serialize() because that would escape newlines
 | 
				
			||||||
        std::string val = optv->get_at(i);
 | 
					        std::string val = optv->get_at(i);
 | 
				
			||||||
        return newSVpvn(val.c_str(), val.length());
 | 
					        return newSVpvn_utf8(val.c_str(), val.length(), true);
 | 
				
			||||||
    } else if (ConfigOptionPoints* optv = dynamic_cast<ConfigOptionPoints*>(opt)) {
 | 
					    } else if (ConfigOptionPoints* optv = dynamic_cast<ConfigOptionPoints*>(opt)) {
 | 
				
			||||||
        return optv->get_at(i).to_SV_pureperl();
 | 
					        return optv->get_at(i).to_SV_pureperl();
 | 
				
			||||||
    } else if (ConfigOptionBools* optv = dynamic_cast<ConfigOptionBools*>(opt)) {
 | 
					    } else if (ConfigOptionBools* optv = dynamic_cast<ConfigOptionBools*>(opt)) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -147,12 +147,12 @@ print_config_def()
 | 
				
			||||||
                throw "Unknown option type";
 | 
					                throw "Unknown option type";
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            (void)hv_stores( hv, "type",        newSVpv(opt_type, 0) );
 | 
					            (void)hv_stores( hv, "type",        newSVpv(opt_type, 0) );
 | 
				
			||||||
            (void)hv_stores( hv, "label",       newSVpvn(optdef->label.c_str(), optdef->label.length()) );
 | 
					            (void)hv_stores( hv, "label",       newSVpvn_utf8(optdef->label.c_str(), optdef->label.length(), true) );
 | 
				
			||||||
            if (!optdef->full_label.empty())
 | 
					            if (!optdef->full_label.empty())
 | 
				
			||||||
                (void)hv_stores( hv, "full_label",  newSVpvn(optdef->full_label.c_str(), optdef->full_label.length()) );
 | 
					                (void)hv_stores( hv, "full_label",  newSVpvn_utf8(optdef->full_label.c_str(), optdef->full_label.length(), true) );
 | 
				
			||||||
            (void)hv_stores( hv, "category",    newSVpvn(optdef->category.c_str(), optdef->category.length()) );
 | 
					            (void)hv_stores( hv, "category",    newSVpvn(optdef->category.c_str(), optdef->category.length()) );
 | 
				
			||||||
            (void)hv_stores( hv, "tooltip",     newSVpvn(optdef->tooltip.c_str(), optdef->tooltip.length()) );
 | 
					            (void)hv_stores( hv, "tooltip",     newSVpvn_utf8(optdef->tooltip.c_str(), optdef->tooltip.length(), true) );
 | 
				
			||||||
            (void)hv_stores( hv, "sidetext",    newSVpvn(optdef->sidetext.c_str(), optdef->sidetext.length()) );
 | 
					            (void)hv_stores( hv, "sidetext",    newSVpvn_utf8(optdef->sidetext.c_str(), optdef->sidetext.length(), true) );
 | 
				
			||||||
            (void)hv_stores( hv, "cli",         newSVpvn(optdef->cli.c_str(), optdef->cli.length()) );
 | 
					            (void)hv_stores( hv, "cli",         newSVpvn(optdef->cli.c_str(), optdef->cli.length()) );
 | 
				
			||||||
            (void)hv_stores( hv, "scope",       newSVpvn(optdef->scope.c_str(), optdef->scope.length()) );
 | 
					            (void)hv_stores( hv, "scope",       newSVpvn(optdef->scope.c_str(), optdef->scope.length()) );
 | 
				
			||||||
            (void)hv_stores( hv, "ratio_over",  newSVpvn(optdef->ratio_over.c_str(), optdef->ratio_over.length()) );
 | 
					            (void)hv_stores( hv, "ratio_over",  newSVpvn(optdef->ratio_over.c_str(), optdef->ratio_over.length()) );
 | 
				
			||||||
| 
						 | 
					@ -196,7 +196,7 @@ print_config_def()
 | 
				
			||||||
                AV* av = newAV();
 | 
					                AV* av = newAV();
 | 
				
			||||||
                av_fill(av, optdef->enum_labels.size()-1);
 | 
					                av_fill(av, optdef->enum_labels.size()-1);
 | 
				
			||||||
                for (std::vector<std::string>::iterator it = optdef->enum_labels.begin(); it != optdef->enum_labels.end(); ++it)
 | 
					                for (std::vector<std::string>::iterator it = optdef->enum_labels.begin(); it != optdef->enum_labels.end(); ++it)
 | 
				
			||||||
                    av_store(av, it - optdef->enum_labels.begin(), newSVpvn(it->c_str(), it->length()));
 | 
					                    av_store(av, it - optdef->enum_labels.begin(), newSVpvn_utf8(it->c_str(), it->length(), true));
 | 
				
			||||||
                (void)hv_stores( hv, "labels", newRV_noinc((SV*)av) );
 | 
					                (void)hv_stores( hv, "labels", newRV_noinc((SV*)av) );
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue