mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-11-03 09:22:01 +00:00 
			
		
		
		
	llama : return nullptr from llama_grammar_init (#8093)
* llama : return nullptr from llama_grammar_init This commit updates llama_grammar_init to return nullptr instead of throwing an exception. The motivation for this is that this function is declared inside an extern "C" block and is intended/may be used from C code which will not be able to handle exceptions thrown, and results in undefined behavior. On Windows and using MSVC the following warning is currently generated: ```console C:\llama.cpp\llama.cpp(13998,1): warning C4297: 'llama_grammar_init': function assumed not to throw an exception but does C:\llama.cpp\llama.cpp(13998,1): message : __declspec(nothrow), throw(), noexcept(true), or noexcept was specified on the function ``` Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com> * squash! llama : return nullptr from llama_grammar_init Add checks for nullptr when calling llama_grammar_init. Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com> --------- Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com> Co-authored-by: Clint Herron <hanclinto@gmail.com>
This commit is contained in:
		
							
								
								
									
										6
									
								
								llama.h
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								llama.h
									
									
									
									
									
								
							@@ -924,6 +924,12 @@ extern "C" {
 | 
			
		||||
    // Grammar
 | 
			
		||||
    //
 | 
			
		||||
 | 
			
		||||
    /// Initialize a llama_grammar.
 | 
			
		||||
    ///
 | 
			
		||||
    /// @param rules The rule elements of the grammar to initialize.
 | 
			
		||||
    /// @param n_rules The number of rules.
 | 
			
		||||
    /// @param start_rule_index The index of the root rule (the starting point of the grammar).
 | 
			
		||||
    /// @return The initialized llama_grammar or nullptr if initialization failed.
 | 
			
		||||
    LLAMA_API struct llama_grammar * llama_grammar_init(
 | 
			
		||||
            const llama_grammar_element ** rules,
 | 
			
		||||
                                 size_t    n_rules,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user